Yazar:
    Oluşturma:2026-09-19Son güncelleme:2026-09-19

    onRequest Astro Ara Yazılım Dokümantasyonu

    astro-intlayer/middleware paketindeki onRequest ara yazılımı, gelen her HTTP isteğinin yerel ayarını çözer ve Astro.locals.intlayer nesnesini doldurur.

    astro.config.mjs içinde intlayer() entegrasyonunu kaydettiğinizde bu ara yazılım otomatik olarak eklenir. Yalnızca sequence(...) kullanarak Astro ara yazılımını manuel olarak oluşturuyorsanız doğrudan içe aktarmanız gerekir.

    Kullanım

    src/middleware.ts
    import { onRequest as intlayer } from "astro-intlayer/middleware";
    import { sequence } from "astro:middleware";
    
    export const onRequest = sequence(intlayer, async (context, next) => {
      // Özel ara yazılımınızda çözümlenen yerel ayara erişin
      const { locale } = context.locals.intlayer;
      console.log(`Yerel ayar için istek işleniyor: ${locale}`);
    
      return next();
    });
    

    Açıklama

    Ara yazılım aşağıdaki işlemleri gerçekleştirir:

    1. Yerel Ayar Algılama:
      • URL: URL yolu önekini veya ?locale= arama parametresini analiz eder (routing.mode no-prefix olarak ayarlanmadığı sürece).
      • Çerezler / Başlıklar: Kalıcı yerel ayar çerezlerini veya özel başlık değerlerini kontrol eder.
      • Accept-Language: Tarayıcının tercih edilen dil anlaşmasına geri döner.
      • Önceden oluşturulmuş sayfalar (context.isPrerendered) için, Astro derleme uyarılarını önlemek amacıyla yerel ayar kesinlikle URL'den ayıklanır.
    2. Bağlam Doldurma: Astro.locals.intlayer'ı şunlarla doldurur:
      • locale: Çözümlenen yerel ayar.
      • defaultLocale: Varsayılan geri dönüş yerel ayarı.
      • availableLocales: Yapılandırılmış yerel ayarlar dizisi.
    3. AsyncLocalStorage Kapsamı: Sonraki istek işlemeyi bir AsyncLocalStorage kapsamı içinde sararak useIntlayer(), useDictionary() ve useLocale()'ün argüman iletmeden istek durumuna erişmesine olanak tanır.

    IntlayerLocals Tipi

    ts
    export type IntlayerLocals = {
      locale: DeclaredLocales;
      defaultLocale: DeclaredLocales;
      availableLocales: DeclaredLocales[];
    };
    

    İlgili Dokümantasyon