Intermediatei18n25 dak18 Nis 2026

Statik Siteler için i18n — 5 Yerel

CMS olmadan slash-rota yerelleştirmesi: sözlükler, dinamik [locale] yolları, hreflang ve beş dili senkron tutmak.

Mimari

/en/blog/hello    ← varsayılan yerel, yine de prefixli (özel durumdan daha temiz)
/ru/blog/hello
/zh/blog/hello
/ja/blog/hello
/de/blog/hello

Üç hareketli parça:

  1. Sözlükler — yerel başına bir JSON, aynı şema, Record<Locale, typeof en> olarak tipli; böylece bir anahtar kaydığında TypeScript bağırır.
  2. Dinamik rotalarsrc/pages/[locale]/... ve her yerele dönen getStaticPaths().
  3. İçerik geri düşüşü — yazıları bir kez en/ altında yaz, çeviriler gelene kadar her yerelin altında render et.

Seni kurtaran tip hilesi

export type Locale = "en" | "ru" | "zh" | "ja" | "de";
const dictionaries: Record<Locale, typeof en> = { en, ru, zh, ja, de };

typeof en şemadır. en.json’a anahtar ekle ve diğer dört sözlük yetişene kadar build kırılır.

Head’i unutma

Her yerel için <link rel="alternate" hreflang="..."> artı x-default, sayfa başına canonical ve Astro.url’den türetilen yollar. Arama motorları sıkıcı tesisatı ödüllendirir.