İçindekiler
İçeriği tek bir dilde yönetmek bile başlı başına bir meydan okumadır. Üç, beş ya da yirmi dil ekleyin; ortaya çoğu CMS platformunun hiçbir zaman çözmek için tasarlanmadığı bir sorun çıkar. Headless CMS mimarisi bir çözüm yolu sunar, ancak yalnızca çok dilli destek temelden inşa edildiğinde — bir eklenti olarak sonradan eklenmediğinde.
Bu rehber, Better i18n'in içerik platformunu pratik bir referans olarak kullanarak ölçeklenebilir bir çok dilli headless CMS stratejisinin nasıl oluşturulacağını adım adım anlatmaktadır.
Bir CMS'i "Çok Dilli Hazır" Yapan Nedir?
Uygulama detaylarına girmeden önce, gerçek anlamda çok dilli desteğin nasıl göründüğünü tanımlamak faydalı olacaktır. Bir CMS şu üç koşulu sağladığında çok dilli hazırdır:
İçerik yapısı dil farkındalığına sahiptir. Şema, çeviri gerektiren alanlar (başlıklar, açıklamalar, gövde metni) ile evrensel alanlar (tarihler, boolean değerler, sayısal değerler, medya varlıkları) arasında ayrım yapar.
API, yerelleştirilmiş içeriği doğal olarak sunar. Ayrı içerik ağaçları oluşturmadan veya girdileri her yerel ayar için kopyalamadan, bir sorgu parametresiyle herhangi bir dilde içerik talep edebilirsiniz.
Çeviri durumu görünürdür. Editörler, CMS kontrol panelinden ayrılmadan hangi girdilerin çevrildiğini, hangilerinin beklemede olduğunu ve hangi dil için eksik olduğunu görebilir.
Mevcut CMS'iniz bu üç kriterden herhangi birini karşılamak için özel kod veya üçüncü taraf hizmetler gerektiriyorsa, ölçeklendikçe sürtünme yaratacak bir temel üzerine inşa ediyorsunuz demektir.
Adım 1: İçerik Modellerinizi Tasarlayın
Bir içerik modeli, içeriğinizin nasıl göründüğünü tanımlayan şemadır. Bunu bir plan olarak düşünün — alanları, türlerini ve doğrulama kurallarını belirtir.
Koleksiyonlar ve Tekil Kayıtlar
Çoğu içerik iki kategoriye girer:
Koleksiyonlar, birden fazla girişi olan modellerdir. Blog yazıları, ürün sayfaları, SSS'ler, ekip üyesi profilleri ve değişiklik günlükleri koleksiyonlardır. Her koleksiyon, aynı alan yapısını paylaşan yüzlerce veya binlerce girişe sahip olabilir.
Tekil kayıtlar, tek bir girişi olan modellerdir. Ana sayfa hero bölümünüz, genel site ayarlarınız veya bir "Hakkımızda" sayfası tekil kayıttır. Koleksiyonlarla aynı alan esnekliğine sahiptirler, ancak tek bir örneği temsil ederler.
Doğru model türüyle başlamak, sonraki yeniden çalışmaları önler. Şunu sorun: "Bundan hiç birden fazla olacak mı?" Cevap evetse koleksiyon kullanın.
Doğru Alan Türlerini Seçmek
Better i18n, yapılandırılmış verileri bir textarea'da saklamak gibi geçici çözümlere başvurmadan içeriği tam olarak modelleyebilmeniz için 19'dan fazla alan türü sunar.
Kategoriye göre pratik bir dökümü şu şekildedir:
Metin alanları:
- Text — Başlıklar, etiketler ve kısa değerler için tek satırlı dizeler
- Textarea — Açıklamalar ve özetler için çok satırlı düz metin
- Rich Text — Başlıklar, listeler, gömülü içerikler ve satır içi stiller içeren biçimlendirilmiş içerik için tam Plate.js editörü
Veri alanları:
- Number — Tam sayı veya ondalık değerler (fiyatlandırma, miktarlar, puanlar)
- Boolean — Doğru/yanlış geçişleri (öne çıkarma bayrakları, görünürlük kontrolleri)
- Date / DateTime — İsteğe bağlı zaman hassasiyetiyle tarih seçiciler
- Enum — Önceden tanımlanmış seçeneklerden tek veya çoklu seçim (kategoriler, etiketler, durum etiketleri)
İletişim ve bağlantı alanları:
- URL — Bağlantılar ve referanslar için doğrulanmış URL alanları
- Email — Doğrulanmış e-posta adresi alanları
- Phone — Format doğrulamalı telefon numarası alanları
Medya ve dosyalar:
- Files / Media — Görüntüleri, PDF'leri, videoları ve diğer varlıkları doğrudan girdilere yükleyin
İlişkisel alanlar:
- Relations — Modeller arasında girdileri birbirine bağlayın (örn. bir blog yazısının yazarı, bir ürünün kategorisi)
- Rollups — İlişkili girdilerden veri toplayın (örn. yazar başına yazı sayısı)
- Formulas — Aynı girdideki diğer alanlara dayalı hesaplanan değerler
Sistem alanları:
- Unique ID — Her girdi için otomatik oluşturulan tanımlayıcı
- Status — Yerleşik iş akışı durumu (draft, pending_review, published, archived)
- Created / Last Edited — Denetim izleri için otomatik zaman damgaları
Alan Bazında Yerelleştirme
Çok dilli CMS tasarımının ilginçleştiği yer burasıdır. Her alanın çevrilmesi gerekmez. Bir ürünün fiyatı her dilde aynıdır. Bir yayın tarihi yerel ayara göre değişmez. Bir görüntü URL'si genellikle evrenseldir.
Better i18n, her alanı model düzeyinde yerelleştirilebilir veya yerelleştirilemeyen olarak işaretlemenize olanak tanır. Yerelleştirilebilir alanlar her dil için ayrı bir değer alır. Yerelleştirilemeyen alanlar tüm çeviriler arasında paylaşılır.
Bu ayrım önemlidir çünkü:
- Çeviri iş yükünü azaltır (çevirmenler yalnızca çevirmesi gereken alanları görür)
- Veri tutarsızlığını önler (evrensel değerler bir kez saklanır, kopyalanmaz)
- API yanıtını temiz tutar (yerelleştirilemeyen alanlar, istenen dilden bağımsız olarak bir kez görünür)
Adım 2: Editoryal İş Akışınızı Oluşturun
Ham CRUD işlemleri, çok dilli içerik yöneten ekipler için yeterli değildir. Darboğaz oluşturmadan kaliteyi güvence altına alan bir iş akışına ihtiyacınız var.
Durum Yaşam Döngüsü
Better i18n'deki her girdi dört aşamalı bir yaşam döngüsünü takip eder:
| Durum | Anlam | API Görünürlüğü |
|---|---|---|
| Draft | Devam eden çalışma | Varsayılan olarak döndürülmez |
| Pending Review | Editoryal onay için hazır | Varsayılan olarak döndürülmez |
| Published | Yayındaki içerik | API sorgularında döndürülür |
| Archived | Saklanan ama etkin olmayan | Varsayılan olarak döndürülmez |
Bu yaşam döngüsü dil bazında değil, girdi bazında uygulanır. Bazı çeviriler hâlâ taslak halindeyken bir girdi yayınlanabilir. API, status sorgu parametresine saygı gösterir; bu nedenle ön ucunuz yalnızca talep ettiğiniz durumdaki içeriği alır.
Ölçek İçin Toplu İşlemler
Birden fazla dilde yüzlerce girdiyi yönetirken tek tek güncellemeler ölçeklenmez. Better i18n toplu işlemleri destekler:
- Toplu durum güncellemeleri — Birden fazla girdi seçin ve bunları tek bir işlemde taslaktan yayınlanmış duruma (veya başka bir geçişe) taşıyın
- Toplu silme — Güncel olmayan girdileri toplu olarak kaldırın
Bu işlemler, kontrol panelinde ve yönetim API'si aracılığıyla kullanılabilir; böylece bunları CI/CD hattınıza veya içerik otomasyon betiklerinize entegre edebilirsiniz.
Adım 3: REST API Aracılığıyla Entegre Edin
"Headless CMS"deki headless kısmı, içeriğinizin bağlı bir ön uç aracılığıyla değil, bir API aracılığıyla iletildiği anlamına gelir. Better i18n, üç temel uç noktayla bir genel REST API sunar:
Temel Uç Noktalar
GET /v1/content/:orgSlug/:projectSlug/models GET /v1/content/:orgSlug/:projectSlug/entries GET /v1/content/:orgSlug/:projectSlug/entries/:entrySlug
Önemli Sorgu Parametreleri
API'nin asıl gücü sorgu parametrelerinde yatmaktadır:
Dil filtreleme:
GET /entries?language=fr
Tüm içeriği Fransızca olarak döndürür. Yerelleştirilemeyen olarak işaretlenen alanlar evrensel değerlerini döndürür. Yerelleştirilebilir alanlar varsa Fransızca çeviriyi döndürür.
Durum filtreleme:
GET /entries?status=published
Yalnızca yayınlanmış girdileri döndürür. Üretim sorguları için dille birleştirin:
GET /entries?language=de&status=published
Alan seçimi (seyrek alan kümeleri):
GET /entries?fields=title,slug,excerpt
Yalnızca ön ucunuzun ihtiyaç duyduğu alanları isteyerek yük boyutunu azaltın.
İlişki genişletme:
GET /entries?expand=author,category
Takip eden istekler yapmak yerine ilişkili girdileri satır içinde çözümleyin. Bu, birçok headless CMS entegrasyonunu etkileyen N+1 sorgu sorununu ortadan kaldırır.
Özel alanlara göre filtreleme:
GET /entries?filter[page_type]=feature
Girdileri herhangi bir özel alan değerine göre filtreleyin. Hassas sorgular için birden fazla filtre birleştirin.
Sayfalama ve sıralama:
GET /entries?page=2&limit=10&sort=createdAt&order=desc
Esnek sıralama ile standart sayfalama. Yanıt, sayfalama arayüzü oluşturmak için toplam sayıyı içerir.
Kimlik Doğrulama
Tüm API istekleri, x-api-key başlığında geçirilen bir API anahtarı gerektirir. Farklı izinlere sahip birden fazla anahtar oluşturabilirsiniz — örneğin ön ucunuz için salt okunur bir anahtar ve CMS entegrasyon betikleriniz için tam erişim anahtarı.
curl -H "x-api-key: your-api-key" \ "https://api.better-i18n.com/v1/content/acme/website/entries?language=en&status=published"
Adım 4: Yapay Zeka İçerik Oluşturmayı Stratejik Kullanın
Better i18n, alan düzeyinde yapay zeka destekli içerik oluşturma özelliği içerir. generateFieldContent özelliği, tek tek alanlar için değer önermek amacıyla model yapınızı ve mevcut içeriğinizi analiz eder.
Yapay Zeka Oluşturmanın Değer Kattığı Yerler
- SEO meta açıklamaları — Girdinin başlığına ve gövde içeriğine dayalı açıklamalar oluşturun
- Alıntılar ve özetler — Uzun biçimli içeriği kısa önizlemelere dönüştürün
- İlk taslaklar — Modelinizin yapısına uyan gövde içeriği için bir başlangıç noktası elde edin
- Görseller için alt metni — Görüntü bağlamına dayalı açıklayıcı alt metin oluşturun
İnsan Yargısının Korunması Gereken Yerler
Yapay zeka oluşturma bir başlangıç noktasıdır, nihai bir çıktı değil. Boş alan felcini ortadan kaldırmak için kullanın, ardından marka sesinize ve olgusal gereksinimlerinize uyacak şekilde düzenleyin. Alan düzeyindeki yaklaşım, hangi alanların yapay zeka önerilerini kullandığını ve hangilerinin el ile yazıldığını tam olarak kontrol etmenizi sağlar.
Adım 5: İçerik Mimarinizi Planlayın
Temel yapı taşları yerinde olduğunda, çok dilli bir site için pratik bir mimari şöyledir:
Önerilen Modeller
| Model | Tür | Kullanım Amacı |
|---|---|---|
pages | Koleksiyon | Pazarlama sayfaları, açılış sayfaları |
blog-posts | Koleksiyon | Makaleler, öğreticiler, duyurular |
navigation | Tekil | Site navigasyon yapısı |
site-settings | Tekil | Genel yapılandırma (logo, alt bilgi, sosyal bağlantılar) |
faq | Koleksiyon | Sık sorulan sorular |
changelog | Koleksiyon | Ürün güncellemeleri ve sürüm notları |
Çeviri İş Akışı
- İçeriği kaynak dilinizde oluşturun. Girdiyi ekibinizin birincil dilinde yazın.
- Çeviri durumu kontrol panelini kullanarak eksik çevirisi olan girdileri belirleyin.
- Girdi editörü veya API aracılığıyla alan bazında çeviriler ekleyin.
- Hazır olduğunda yayınlayın — durum yaşam döngüsü, kaynak dili hemen yayınlamanıza ve çeviriler hazır oldukça eklemenize olanak tanır.
Kaçınılması Gereken Yaygın Hatalar
Girdileri dil başına kopyalamak. Bu en yaygın hatadır. Aynı sayfanın İngilizce, Fransızca ve Almanca sürümleri için ayrı girdiler oluşturursanız aralarındaki bağlantıyı kaybedersiniz. Bunun yerine alan bazında çevirilerle tek bir girdi kullanın.
Yerelleştirilemeyen alanları göz ardı etmek. Evrensel alanları (fiyatlar, tarihler, boolean bayraklar) yerelleştirilemeyen olarak işaretlememek, çevirmenlerin dokunmaması gereken alanları görmesi ve veri tutarsızlığı riski anlamına gelir.
Durum iş akışını atlamak. İnceleme aşamaları olmadan içeriği doğrudan yayınlamak tek başına çalışan bir blog yazarı için işe yarar, ancak ekiplerde işe yaramaz. Kaliteyi korumak için taslaktan yayınlanmış duruma geçiş yaşam döngüsünü kullanın.
API'den aşırı veri çekmek. Yalnızca ön ucunuzun ihtiyaç duyduklarını istemek için fields parametresini kullanın. Birden fazla API çağrısını zincirleme yerine tek bir istekte ilişkileri çözümlemek için expand kullanın.
Başlangıç
Çok dilli içerik stratejisi oluşturmak aylarca altyapı çalışması gerektirmez. Better i18n'in headless CMS'i ile:
- Model Oluşturucu'da içerik modellerinizi tanımlayın
- Kaynak dilinizde girdiler oluşturun
- Girdi editörü veya API kullanarak çeviriler ekleyin
- REST API aracılığıyla yerelleştirilmiş içeriği sorgulayın
- İçerik oluşturmayı hızlandırmak için yapay zeka oluşturmayı kullanın
Model oluşturmadan API teslimine kadar tüm iş akışı, çok dilli içeriği ürünlerinin sonradan düşünülen bir özelliği olarak değil, temel bir parçası olarak sunan ekipler için tasarlanmıştır.