EYDefterEmre Yakut
← tüm yazılar
Sistem

90 sayfa, üç dil, tek kaynak

Bir mekanik taahhüt firmasının kurumsal sitesi doksan sayfa tutuyordu — Türkçe, İngilizce, Almanca. Doksan dosya yazmadım. Doksan dosya ürettim.

content/*.mjs tek kaynak build.mjs routes + i18n /tr/…30 sayfa · kendi sitemap’i · kendi hreflang’i/en/…30 sayfa · kendi sitemap’i · kendi hreflang’i/de/…30 sayfa · kendi sitemap’i · kendi hreflang’ibaşlık, menü, altbilgi, şema, hreflang — 90 yerde değil, 1 yerde90 dosya elle yazılmaz;90 dosya üretilir.dist/ git’e girer — sunucuda node çalışmaz, statik dosya çalışır

Mekanik taahhüt işi yapan, aynı zamanda yetkili ürün satışı olan bir firma. İki ayrı konumlanma: bir yanda proje taahhüdü (ısı merkezi, havalandırma, otomasyon), diğer yanda Siemens ürün grupları.

İki konumlanma × dokuz hizmet × altı ürün grubu × üç dil. Sayfa sayısı doksanı buluyordu.

İki yol vardı

Birincisi: bir CMS kur, içerikleri panele gir. Mantıklı gelir. Ama bu sitenin içeriği ayda bir değil, yılda bir değişiyor. CMS demek bakım, güncelleme, eklenti ve güvenlik yüzeyi demek; karşılığında kimsenin kullanmayacağı bir panel alıyorsun.

İkincisi: içerikleri veri olarak yaz, sayfaları üret. Bunu seçtim.

src/content/services.mjs   ← hizmet metinleri, üç dilde
src/content/siemens.mjs    ← ürün grupları
src/content/site.mjs       ← firma bilgisi, iletişim, künye
src/i18n.mjs               ← arayüz metinleri
src/routes.mjs             ← hangi dil hangi yolda
src/layout.mjs             ← tek başlık, tek altbilgi
build.mjs
        ↓
dist/  90 sayfa + sitemap + robots + llms.txt

“Tek kaynak” ne demek

Telefon numarası bir yerde yazılı. Doksan sayfanın altbilgisinde, iletişim sayfasında, yapısal veride ve mesajlaşma bağlantısında aynı değişkenden geliyor.

Numara değişirse tek satır değişiyor ve doksan sayfa doğru oluyor.

Elle yazılmış bir sitede bu böyle olmuyor: numara altbilgide güncelleniyor, iletişim sayfasında unutuluyor, şemada eski kalıyor. Altı ay sonra arama motoru firmaya ait olmayan bir numara gösteriyor ve kimse sebebini bilmiyor.

bir firmanın en tehlikeli verisi

Adres, telefon ve ünvan. Bunlar arama motorlarında varlık sinyali olarak kullanılıyor; farklı yerlerde farklı yazılırsa firma bir değil iki işletme gibi görünüyor ve ikisi de zayıflıyor.

Tek kaynak meselesi bir düzen takıntısı değil, doğrudan görünürlük meselesi.

Üç dilin en çok bozulan parçası

Çok dilli sitelerde en sık gördüğüm hata hreflang. Genelde şöyle yazılıyor: Türkçe sayfa İngilizcesini gösteriyor, İngilizce sayfa Türkçesini, Almanca kimseyi.

Doğrusu: her sayfa, kendisi dahil tüm kardeşlerini göstermeli. Üç dil varsa her sayfada dört satır olur.

<link rel="alternate" hreflang="tr"        href="…/hizmetler/isitma-sistemleri/">
<link rel="alternate" hreflang="en"        href="…/en/services/heating-systems/">
<link rel="alternate" hreflang="de"        href="…/de/leistungen/heizungsanlagen/">
<link rel="alternate" hreflang="x-default" href="…/hizmetler/isitma-sistemleri/">

Dikkat: yollar çevrilmiş. Almanca sayfa /de/leistungen/heizungsanlagen/ adresinde. Bu hem kullanıcı için okunabilirlik hem arama motoru için dil sinyali.

Doksan sayfada bunu elle yazmak imkânsız. Üretici için önemsiz — yönlendirme tablosundan türetiyor.

Üretilen klasör sürüm kontrolüne girer

Bir tercih daha: üretilen dist/ klasörü git’te duruyor.

Çoğu proje üretilmiş dosyaları versiyonlamaz, haklı olarak. Ama burada sunucuya giden şey tam olarak o klasör. Git’te tutmanın üç faydası var: yayına ne gittiğini tam olarak görüyorsun; sunucuda Node çalışmıyor, rsync bir klasör kopyalıyor; ve bir şey bozulursa bir önceki commit’i basmak yeterli.

Bir de içerik tarafı

Teknik altyapı doksan sayfayı üretir ama dolduramaz. Asıl iş orada.

Bir hizmet sayfasının işe yaraması için “kaliteli hizmet sunuyoruz” demesi yetmiyor. Hangi ekipman, hangi kapasite aralığı, hangi standart, hangi sektör — hem müşterinin aradığı hem arama motorunun anladığı şeyler bunlar. Ve üç dilde de aynı somutlukta olması gerekiyor; İngilizcesi Türkçesinin kısaltılmışı olamaz.

Ne öğrendim

“Üretilmiş site” fikri ilk anda fazla teknik geliyor. Oysa asıl basitleşen şey bakım.

Bir yıl sonra bu siteye hizmet eklemek isteyen kişi bir panele girip on beş alan doldurmayacak. Bir dosyaya bir nesne ekleyip üreticiyi çalıştıracak. Sayfa, menüdeki yeri, üç dildeki karşılığı, sitemap kaydı ve şeması kendiliğinden oluşacak.

Doksan sayfalık bir siteyi yönetilebilir kılan şey panel değil, tekrarın kaldırılması.

Sistem