Sorunuzu sorun ve bu sayfaya ve seçtiğiniz AI sağlayıcısına referans vererek belgenin bir özetini alın
Sürüm Geçmişi
- "`@intlayer/analytics` kuruluyken analitiği varsayılan olarak etkinleştir"v9.3.322.08.2026
- "Init doc — @intlayer/analytics paketi, provider/node düzeyinde izleme, A/B testi, gösterge paneli"v9.0.008.07.2026
Bu sayfanın içeriği bir yapay zeka kullanılarak çevrildi.
Orijinal içeriğin İngilizce son sürümünü görüntüleyinBu dokümantasyonu geliştirmek için bir fikriniz varsa, lütfen GitHub'da bir çekme isteği göndererek katkıda bulunmaktan çekinmeyin.
Dokümantasyon için GitHub bağlantısıBelge Markdown'ını panoya kopyala
Intlayer Analytics Dokümantasyonu
@intlayer/analytics, ziyaretçilerinize gerçekte hangi içeriğin gösterildiğini (hangi sayfanın, hangi yerel ayarda (locale) ve çevrilmiş içeriğin hangi belirli parçasının) size bildiren isteğe bağlı bir yardımcı pakettir, böylece hedef kitlenizi anlayabilir ve içerik üzerinde A/B testleri yürütebilirsiniz.
İçindekiler
Neleri İzler
@intlayer/analytics üç tür anonim olayı toplu olarak işler (batch):
Tüm veri içeriğini net bir şekilde görmek için tabloyu modalde açın
| Olay | Nerede yakalanır | Size ne anlatır |
|---|---|---|
page_view | Sağlayıcı düzeyinde (IntlayerProvider) | Bir oturumun (session) ilk yüklemede, rota değişikliğinde veya yerel ayar değişiminde hangi sayfayı ve yereli görüntülediği. |
content_exposure | Düğüm düzeyinde (useIntlayer / eklentiler) | Hangi sözlük anahtarının / anahtar yolunun gerçekten çözümlenip görüntülendiği — ve, bir deneyin parçasıysa, hangi varyantın (variant). |
conversion | useConversion() çağırdığınız her yerde | Oturumun maruz kaldığı A/B varyantına atfedilen (attributed) bir ulaşılan hedef (kayıt, tıklama, satın alma...). |
Olaylar bellekte toplanır ve yaklaşık her 20 saniyede bir tek bir toplu istek (batch request) olarak gönderilir — asla her tuş vuruşunda veya oluşturmada (render) değil — bu nedenle analitik, ilk oluşturma süresini asla etkilemez veya her etkileşim başına bir istek eklemez.
İçerikte A/B Testini Nasıl Destekler
Intlayer zaten içerik Varyantları (Variants) (örneğin bir control ve bir black_friday varyantına sahip bir hero-banner sözlüğü) bildirmenize izin verir. @intlayer/analytics bu döngüyü tamamlar:
getVariant(experimentKey, variants)her anonim oturumu deterministik olarak bir varyanta atar — oturum kimliğinin ve deney anahtarının (experiment key) saf bir işlevidir (pure function), bu nedenle atama tüm oturum boyunca kararlıdır ve ilk oluşturmadan önce sunucu gidiş-dönüşü (server round-trip) gerektirmez (titreme yok, düzen kayması (layout shift) yok).- Her
content_exposureolayı gösterilenvariantbilgisini taşır. useConversion(), bir hedefi (örneğin"cta_click") o varyanta atfetmenize (attribute) olanak tanır.- Gösterge panelindeki deney sonuçları (experiment results) uç noktası, istatistiksel anlamlılık (z-testi) dahil olmak üzere varyant başına dönüşüm oranlarını (conversion rates) karşılaştırır.
Kurulum
@intlayer/analytics, her framework paketinin (react-intlayer, next-intlayer, vue-intlayer, …) isteğe bağlı bağımlılığıdır; bu nedenle çoğu projede zaten bulunur. Kurulumunuz isteğe bağlı bağımlılıkları atlıyorsa (npm install --no-optional, …) paketi açıkça kurun:
Kodu panoya kopyala
Analitiği açmak için paketi kurmanız yeterlidir: analytics.enabled varsayılan olarak true'dur ve paket projenizde bulunamadığında @intlayer/config bunu false olarak çözümler. Kurmazsanız, her entegrasyon noktası etkisiz bir işlem (no-op) olarak çözülür — aşağıdaki Kurulmadığında sıfır maliyet bölümüne bakın.
Yapılandırma
Analitiğin başlaması için yapılandırma gerekmez: varsayılan olarak etkindir ve uç nokta ile proje anahtarı için mevcut editor yapılandırma bloğunu yeniden kullanır.
Kodu panoya kopyala
import type { IntlayerConfig } from "intlayer";
const config: IntlayerConfig = {
editor: {
backendURL: "https://back.intlayer.org", // Analytics veri alma uç noktası (ingestion endpoint) olarak da kullanılır
clientId: "your-client-id", // Analytics proje anahtarı olarak da kullanılır
clientSecret: "your-client-secret",
},
};
export default config;
editor.backendURL— analitik olaylarının gönderildiği temel URL (POST {backendURL}/api/analytics/events).editor.clientId— yutulan her olaya atfedilen genel proje anahtarı. Aynı zamanda bir etkinleştirme anahtarı (enable switch) işlevi görür:clientIdyapılandırılana kadar analizler tamamen devre dışı bırakılır (ve ölü kod olarak atılır (tree-shaken), aşağıya bakın).
Intlayer'ı kendi başınıza barındırıyorsanız (self-host), analiz otomatik olarak editor.backendURL'yi paylaştığı için kendi örneğinize (instance) işaret eder.
API'yi tarayıcıdan çağırma
Aynı token, kimlik bilgisi gerektirmeyen küçük bir istemciyi destekler; böylece statik bir site veya SPA, hiçbir sunucu, sunucu eylemi (server action) veya pakette hiçbir gizli bilgi (secret) olmadan çalışma zamanında CMS içeriğini okuyabilir:
Kodu panoya kopyala
Kendisini editor.clientId üzerinden doğrular; değişim, önbelleğe alma ve yenileme dahili olarak yönetilir. Kapsamlar (scopes) erişebileceği şeyleri sınırlar: yayımlanmış sözlük içeriği ve analitik verisi alma. Bunun dışındaki her şey (sözlükleri yayınlamak, bir projeyi okumak, AI kredisi harcamak) gerçek bir kimlik bilgisi, dolayısıyla bir sunucu veya oturum açmış bir kullanıcı gerektirir.
Devre dışı bırakma
İsteğe bağlı analytics bloğu veri toplamayı ayarlar — ya da tamamen kapatır:
Kodu panoya kopyala
import type { IntlayerConfig } from "intlayer";
const config: IntlayerConfig = {
analytics: {
enabled: false, // Varsayılan: true — tüm entegrasyonu paketin dışında bırakır
flushInterval: 20_000, // İki toplu gönderim arasındaki milisaniye
sampleRate: 1, // Kaydedilecek oturum oranı, 0 (hiçbiri) ile 1 (tümü) arasında
},
};
export default config;
@intlayer/analytics paketini kaldırmak enabled: false ile aynı etkiye sahiptir. Alanların tam listesi için yapılandırma referansına bakın.
Kullanım
Otomatik sağlayıcı (provider) düzeyinde izleme
Kod değişikliği gerekmez. @intlayer/analytics kurulduktan ve editor.clientId yapılandırıldıktan sonra IntlayerProvider otomatik olarak:
- mount edildiğinde (bağlandığında) analiz istemcisini başlatır,
- ilk yüklemede bir
page_viewkaydeder, - her yerel ayar değişikliğinde bir
page_viewkaydeder, - ~20s boşaltma (flush) döngüsünü başlatır ve unmount / sekme kapatıldığında (tab close) kalan tüm olayları boşaltır (
navigator.sendBeaconaracılığıyla,fetch(..., { keepalive: true })işlevine geri dönerek (fallback)).
Giriş noktası her framework'te farklıdır, ancak her durumda Intlayer'ı zaten kurmak için kullandığınız aynı noktadır, bu yüzden eklenecek ekstra bir şey yoktur:
IntlayerProvider, analiz sağlayıcısını dahili olarak bağlar (mount eder).
Kodu panoya kopyala
next-intlayer, React'in IntlayerProvider'ını yeniden dışa aktarır, bu nedenle analitik de aynı şekilde bağlanır.
Kodu panoya kopyala
intlayer eklentisi, analiz kancalarını (hooks) kök bileşenin yaşam döngüsüne kaydeder.
Kodu panoya kopyala
Nuxt ile, nuxt-intlayer eklentiyi sizin için kurar: yapılacak bir şey yoktur.
setupIntlayer(), Intlayer'ı kuran bileşenden analitiği başlatır.
Kodu panoya kopyala
IntlayerProvider, analiz sağlayıcısını dahili olarak bağlar (mount eder).
Kodu panoya kopyala
IntlayerProvider, analiz sağlayıcısını tembel (lazy) şekilde bağlar, böylece bu parça (chunk) kritik yolun dışında kalır.
Kodu panoya kopyala
provideIntlayer(), provideIntlayerAnalytics()'i zaten içerir.
Kodu panoya kopyala
provideIntlayerAnalytics()'i tek başına yalnızca sağlayıcıları ayrı ayrı yönetiyorsanız kullanın.
Otomatik düğüm (node) düzeyinde izleme
useIntlayer görüntüleme için bir içerik parçasını her çözümlediğinde, yorumlayıcı (interpreter) o tam dictionaryKey + anahtar yolu (key path) + yerel ayar (locale) için bir content_exposure olayı bildirir — yine, hiçbir kod değişikliği gerekmez. Aynı düğümün bir boşaltma penceresi (flush window) içindeki tekrarlanan gösterimleri bir count (sayım) ile tek bir olayda birleştirilir (coalesced), bu nedenle 50 kez yeniden oluşturulan (re-render) bir liste 50 olay göndermez.
A/B testleri için dönüşümleri izleme
Bir oturumun (session) gördüğü varyanta bir hedef atfetmek için useConversion() kullanın:
Kodu panoya kopyala
Kodu panoya kopyala
useConversionbir istemci kancasıdır (client hook): bileşeni"use client"ile işaretleyin.
Kodu panoya kopyala
Kodu panoya kopyala
Kodu panoya kopyala
Kodu panoya kopyala
Kodu panoya kopyala
Bir varyantı istemci tarafında çözümleme (Resolving a variant client-side)
useExperiment(), oturumu bir varyanta atar ve dönüşüm oranının paydası olan gösterimi (exposure) kaydeder. Atama çözümlenmeden önce hiçbir ziyaretçinin kontrol varyantının kısa süreliğine görünmesini önlemek için varyanta bağlı alt ağacı yalnızca isAssigned doğruyken gösterin:
variant basit bir dizedir (string).
Kodu panoya kopyala
variant basit bir dizedir (string). Atama tarayıcıda gerçekleşir, bu nedenle bileşen bir istemci bileşeni olmalıdır.
Kodu panoya kopyala
variant ve isAssigned, Ref'lerdir.
Kodu panoya kopyala
variant ve isAssigned, store'lardır: bunları $ öneki ile okuyun.
Kodu panoya kopyala
variant basit bir dizedir (string).
Kodu panoya kopyala
variant ve isAssigned, Accessor'lardır: değeri okumak için bunları çağırın.
Kodu panoya kopyala
variant ve isAssigned, Signal'lardır: değeri okumak için bunları çağırın.
Kodu panoya kopyala
Ağırlıklar isteğe bağlıdır — bölünmeyi eğmek için varyant başına bir tane geçirin, örneğin useExperiment("homepage-hero", ["default", "black_friday"], [9, 1]).
Alt bileşen daha sonra eşleşen sözlüğün Variant'ını okur:
Kodu panoya kopyala
Varyantı bir alt bileşende okumak, bunun React dışında da çalışmasını sağlayan şeydir: Vue, Svelte, Solid ve Angular'da, useIntlayer'a geçirilen seçici (selector), bileşen kurulduğunda yakalanır, bu nedenle okuma işlemi yalnızca varyant bilindikten sonra bağlanan bir bileşende gerçekleşmelidir.
Deney tek bir sözlük yerine tüm bir sayfayı kapsıyorsa, varyantı bunun yerine sağlayıcıya taşıyın — bkz. Ambient variant. Aşağıdaki her useIntlayer, çağrı noktasında herhangi bir değişiklik yapılmadan buna göre çözümlenir.
Bir bileşenin dışında ham atamaya ihtiyacınız varsa, doğrudan istemciye başvurun:
getVariantyalnızca atama yapar: gösterimi (exposure) kaydetmez. Bunun yerineuseExperiment()kullanmayı tercih edin, aksi takdirde dönüşüm oranının bir paydası olmaz.
Gizlilik ve Performans
- Tasarım gereği anonim: Oturumlar dönen (rotating) bir id ile tanımlanır; arka uç (backend) yalnızca o kimliğin bir SHA-256 karmasını (hash) saklar — asla ham id'yi ve asla bir IP adresini saklamaz.
- Konum kabadır (coarse): Yalnızca CDN coğrafi konum başlıklarından (geolocation headers) (
cf-ipcountry,x-vercel-ip-country, ...) elde edilen bir ülke kodu — hiçbir IP okunmaz veya saklanmaz. - URL'ler arama parametrelerini varsayılan olarak hariç tutar, bu nedenle sorgu dizeleri (query strings) asla yakalanmaz.
- Örnekleme (Sampling):
sampleRate, trafiği yüksek uygulamalarda içerik gösterimi olaylarının yalnızca bir kısmını saklamanıza olanak tanır. - Toplu İşleme (Batched): Yaklaşık her 20 saniyede bir istek (
flushInterval) veya arabellek (buffer) dolarsa daha erken (maxBufferSize) — hiçbir zaman olay başına bir istek değil.
Kurulmadığında sıfır maliyet (Zero-cost when not installed)
@intlayer/analytics, @intlayer/editor ile tamamen aynı isteğe bağlı bağımlılık desenini izler:
- Her entegrasyon noktası, paketi
try/catchiçine sarılmış dinamik birimport()aracılığıyla yükler —@intlayer/analytics'i hiç kurmayan bir uygulama hiçbir zaman paket boyutu veya çalışma zamanı (runtime) maliyeti ödemez ve hiçbir zaman bir hata görmez; - derleme zamanı ortam değişkeni (
INTLAYER_ANALYTICS_ENABLED), paket kurulu değilse,analytics.enabledfalseise ya daeditor.clientIdyapılandırılmamışsa@intlayer/configtarafından otomatik olarak'false'yapılır ve paketleyicilerin tüm entegrasyonu ölü kod olarak kaldırmasını (dead-code-eliminate) sağlar; - Analytics, Intlayer düzenleyicisi (editor)/CMS önizleme (preview) iframe'i içinde devre dışı bırakılır, böylece düzenleyici oturumları (editor sessions) hiçbir zaman gerçek trafik olarak sayılmaz.
Gösterge Paneli (Dashboard): Analytics sayfası
Projeniz olayları topladıktan sonra, Intlayer gösterge paneli (dashboard) içindeki Analytics sayfası (bir proje seçildikten sonra kenar çubuğunda (sidebar) görünür) şunları gösterir:
- Aktif kullanıcılar — seçilen hareketli penceredeki (7 / 30 / 90 gün) benzersiz (distinct) ziyaretçiler.
- Bugünkü kullanıcılar ve son 7 gündeki kullanıcılar.
- Seçili pencere boyunca Sayfa görüntülemeleri (Page views).
- Günlük tekil ziyaretçilerin bir gelişim grafiği (evolution graph).
- Hedef kitlenizi yerel ayar ve ülkeye göre sıralayan Yerel Ayarlar (Locales) ve Konum (Location) döküm sekmeleri.
Arka Uç API Referansı (Backend API reference)
Tüm okuma uç noktaları (read endpoints) kimlik doğrulama gerektirir; veri alımı (ingestion) geneldir (public) ve gövdedeki clientId tarafından ilişkilendirilir (attributed).
Tüm veri içeriğini net bir şekilde görmek için tabloyu modalde açın
| Yöntem | Uç Nokta (Endpoint) | Açıklama |
|---|---|---|
POST | /api/analytics/events | Bir dizi olayı içeri al (genel, gövdede clientId tarafından atfedilir). |
GET | /api/analytics/overview | Kimliği doğrulanmış proje için sayfa/yerel ayar toplamları. |
GET | /api/analytics/audience?days=30 | Tekil ziyaretçiler, sayfa görünümleri, günlük dizi, yerel + ülke dökümleri. |
GET | /api/analytics/content-stats | İçerik başına gösterim toplamları (sözlük anahtarı / yolu / yerele göre gruplanır). |
GET | /api/analytics/experiments/:experimentKey | Bir A/B deneyi için varyant başına dönüşüm oranları ve istatistiksel anlamlılık. |
Bunları CMS SDK ile programatik olarak da çağırabilirsiniz:
Kodu panoya kopyala
Yalnızca sunucu tarafında.createIntlayerCMS(),clientId+clientSecretile kimlik doğrular ve gizli bilgi (secret) hiçbir zaman tarayıcıda kullanılamaz: bu kod parçacığı orada çalışırsa, kimliği doğrulanmamış istekler gönderirdi. Bunu bir route handler, server action veya betikte (script) tutun.
