İçerik
Çeviri nasıl yapılır?
Site İngilizce (prefix yok), Türkçe (/tr/), Almanca (/de/) ve Rusça (/ru/) destekler. Rehber (/docs) yalnızca EN + TR kalır. Uzun cümleleri .astro dosyalarına yazmayın — aşağıdaki kalıpları kullanın.
1. Sabit arayüz metinleri (src/i18n/)
- src/i18n/hero.ts, common.ts, faq.ts, cta.ts — başlık, düğme, SSS
- src/i18n/pages/ — uzun sayfa gövdeleri (about, contact, privacy)
- Bileşenlerde t(obj, locale); locale = getLangFromUrl veya ince stub sayfada sabit
Metin formatı: dört dil
import { ls, t } from "@/i18n/utils";
export const myTitle = ls("Hello", "Merhaba", "Hallo", "Привет");
const locale = getLangFromUrl(Astro.url);
<h1>{t(myTitle, locale)}</h1>
2. Menü ve hizmetler (src/config/)
- nav.ts — her link için label ve href dört dilde
- services.ts — başlık, slug, açıklama; URL sitePages ile uyumlu
- routes.ts — sitePages ile tüm site URL’leri
3. CMS içeriği (Keystatic)
Blog, ekip ve yorumlarda titleEn, titleTr, titleDe, titleRu alanları var. Bileşenler pickLocalized(data, locale) ile okur.
4. Sayfa dosyaları (ince stub)
Sayfa başına tek bileşen (örn. ContactPage.astro). EN src/pages/contact.astro; TR/DE/RU stub yalnızca locale verir. sitePages ekledikten sonra npm run sync:routes.
5. Kontrol
- npm run validate:i18n — eksik de/ru anahtarları
- Header’dan dil değiştirin; URL’ler routes.ts ile eşleşmeli
- npm run extend:i18n — yeni de/ru için EN kopyası (starter)