--- createdAt: 2025-09-22 updatedAt: 2025-09-23 title: Yeni Intlayer v7 - Yenilikler Neler? description: Intlayer v7'de nelerin yeni olduğunu keşfedin. Performans, geliştirici deneyimi ve uluslararasılaştırma iş akışınızı geliştirecek yeni özelliklerde büyük iyileştirmeler. keywords: - Intlayer - Yerelleştirme - Geliştirme - Performans - Geliştirici Deneyimi - Özellikler - React - Next.js - JavaScript - TypeScript slugs: - doc - releases - v7 --- # Yeni Intlayer v7 - Yenilikler Neler? Intlayer v7'ye hoş geldiniz! Bu büyük sürüm, performans, tür güvenliği ve geliştirici deneyiminde önemli iyileştirmeler sunuyor. Aşağıda, geçiş notları ve pratik örneklerle birlikte öne çıkanlar yer almaktadır. ## Öne Çıkanlar - Daha hızlı derlemeler için önbellekleme stratejisi - Yerel dil türlerine göre geliştirilmiş TypeScript türü oluşturma - Paket optimizasyonu: Enum yerine string olarak yereller - Yeni yönlendirme modları: `prefix-no-default`, `prefix-all`, `no-prefix`, `search-params` - GDPR uyumlu yerel depolama, varsayılan olarak localStorage kullanımı - Esnek depolama yapılandırması: çerezler, localStorage, sessionStorage veya birden fazla - Görsel Düzenleyici paket boyutunda %30 küçülme - Geliştirilmiş ara katman (middleware) yapılandırma seçenekleri - Daha iyi içerik yönetimi için güncellenmiş fill komutu davranışı - Tam içerik beyan dosyası güncellemeleri ile artırılmış kararlılık - Çeviri doğruluğu için akıllı yeniden deneme yönetimi - Daha hızlı çeviri işlemi için paralelleştirme - AI bağlam sınırları içinde büyük dosyaları yönetmek için akıllı parçalara ayırma --- ## Performans: Daha hızlı derlemeler için önbellekleme Her derlemede esbuild ile içerik beyanlarını yeniden oluşturmak yerine, v7 derleme sürecini hızlandıran bir önbellekleme stratejisi uygular. ```bash npx intlayer build ``` Yeni önbellekleme sistemi: - Derlenmiş içerik beyanlarını saklayarak gereksiz işlemleri önler - Değişiklikleri algılar ve sadece değiştirilmiş dosyaları yeniden oluşturur - Büyük projelerde derleme sürelerini önemli ölçüde azaltır --- ## TypeScript: Yerel dil bazlı tür oluşturma TypeScript türleri artık her yerel dil için ayrı ayrı oluşturulmakta, böylece daha güçlü türlendirme sağlanmakta ve tüm yereller arasında birleşik türler ortadan kaldırılmaktadır. **v6 davranışı:** ```tsx const content = getIntlayer("my-title-content", "en"); // typeof content = { title: "My title" } | { title: "Mon titre" } | { title: "Mi título" } ``` **v7 davranışı:** ```tsx const content = getIntlayer("my-title-content", "en"); // typeof content = { title: "Başlığım" } ``` Faydalar: - IDE'nizde daha hassas otomatik tamamlama - Yereller arası tür kirliliği olmadan daha iyi tür güvenliği - Tür karmaşıklığını azaltarak geliştirilmiş performans --- ## Paket optimizasyonu: Yereller string olarak `Locales` türü artık bir enum değil, bu da tamamen tree-shakeable olduğu ve binlerce kullanılmayan yerel kayıtla paketinizin şişmesini engellediği anlamına gelir. **v6:** ```typescript import { Locales } from "intlayer"; // Tüm yerelleri içeren enum -> tree-shakeable değil const locale: Locales = Locales.ENGLISH; ``` **v7:** ```typescript import { Locales, Locale } from "intlayer"; // String türü -> tamamen tree-shakeable const locale: Locale = Locales.ENGLISH; ``` > Çünkü `Locales` artık bir enum değil, yerel türü olarak almak için türü `Locales`'den `Locale`'a değiştirmeniz gerekecek. Daha fazla bilgi için [uygulama detaylarına](https://github.com/aymericzip/intlayer/blob/main/packages/%40intlayer/types/src/index.ts) bakınız. --- ## Daha fazla esneklik için yeni yönlendirme modları v7, önceki `prefixDefault` ve `noPrefix` seçeneklerinin yerini alan birleşik bir `routing.mode` yapılandırması sunar ve URL yapısı üzerinde daha ayrıntılı kontrol sağlar. ### Mevcut yönlendirme modları - **`prefix-no-default`** (varsayılan): Varsayılan yerel için önek yok, diğer yerellerde var - `/dashboard` (en) veya `/fr/dashboard` (fr) - **`prefix-all`**: Tüm yerellerde önek var - `/en/dashboard` (en) veya `/fr/dashboard` (fr) - **`no-prefix`**: URL'lerde yerel önek yok (yerel ayar depolama/başlıklar aracılığıyla yönetilir) - Tüm yereller için `/dashboard` - **`search-params`**: Yerel ayar sorgu parametresi olarak iletilir - `/dashboard?locale=en` veya `/dashboard?locale=fr` ### Temel yapılandırma ```typescript // intlayer.config.ts export default { internationalization: { locales: ["en", "fr", "es"], defaultLocale: "en", }, routing: { mode: "prefix-no-default", // varsayılan }, }; ``` --- ## GDPR uyumluluğu: localStorage / çerez depolama v7, kullanıcı gizliliğini ön planda tutarak varsayılan depolama mekanizması olarak çerezler yerine `localStorage` kullanır. Bu değişiklik, yerel tercihleri için çerez onayı gereksinimini ortadan kaldırarak GDPR uyumluluğuna yardımcı olur. ### Depolama yapılandırma seçenekleri Yeni `routing.storage` alanı, önceki `middleware.cookieName` ve `middleware.serverSetCookie` seçeneklerine ek olarak kullanılabilir durumdadır ve esnek depolama yapılandırmaları sunar: ```typescript // Depolamayı devre dışı bırak storage: false // Basit depolama türleri storage: 'cookie' storage: 'localStorage' storage: 'sessionStorage' // Özel özelliklere sahip çerez storage: { type: 'cookie', name: 'custom-locale', domain: '.example.com', secure: true, sameSite: 'strict' } // Özel anahtarla localStorage storage: { type: 'localStorage', name: 'custom-locale' } // Yedeklilik için birden fazla depolama türü storage: ['cookie', 'localStorage'] ``` ### GDPR uyumlu yapılandırma örneği Fonksiyonellik ile GDPR uyumluluğunu dengelemek zorunda olan üretim uygulamaları için: ```typescript // intlayer.config.ts export default { internationalization: { locales: ["en", "fr", "es"], defaultLocale: "en", }, routing: { mode: "prefix-no-default", storage: [ { type: "localStorage", // Birincil depolama (izin gerekmez) name: "user-locale", }, { type: "cookie", // Opsiyonel çerez depolama (izin gerektirir) name: "user-locale", secure: true, sameSite: "strict", httpOnly: false, }, ], }, }; ``` ### Çerez depolamasını etkinleştirme / devre dışı bırakma React / Next.js kullanarak örnek: Genel olarak tanımlanabilir: ```typescript ``` Her hook için yerel olarak geçersiz kılınabilir: ```ts const { setLocale } = useLocale({ isCookieEnabled: false }); setLocale("en"); ``` **Not:** Çerezler varsayılan olarak etkinleştirilmiştir. **Not:** Özel kullanım durumunuz için [GDPR çerez gereksinimlerini](https://gdpr.eu/cookies/) kontrol edin. --- ## Görsel Düzenleyici: %30 daha küçük paket Görsel Düzenleyici paketi, önceki sürüme göre %30 daha küçük olacak şekilde optimize edilmiştir, bunun sebepleri: - Kod düzenleyici performans iyileştirmeleri - Intlayer çekirdek paketlerine olan gereksiz bağımlılıkların kaldırılması - Daha iyi tree-shaking ve modül paketleme Bu, uygulamanız için daha hızlı indirme süreleri ve geliştirilmiş çalışma zamanı performansı sağlar. --- ## Fill komutu: Daha iyi içerik yönetimi için güncellenmiş davranış v7, `fill` komutu için daha öngörülebilir ve esnek içerik yönetimi sağlayan geliştirilmiş bir davranış sunar: ### Yeni fill davranışı - **`fill: true`** - Tüm yereller için doldurulmuş içerikle mevcut dosyayı yeniden yazar - **`fill: "path/to/file"`** - Mevcut dosyayı değiştirmeden belirtilen dosyayı doldurur - **`fill: false`** - Otomatik doldurmayı tamamen devre dışı bırakır ### Karmaşık içerik yapıları için geliştirilmiş destek Fill komutu artık aşağıdakiler dahil karmaşık içerik beyanı yapılarını desteklemektedir: - **Bileşik nesneler**: Diğer nesnelere referans veren içerik beyanları - **Yapı bozma (destructuring) içeriği**: Yapı bozma desenleri kullanan içerik - **İç içe referanslar**: Karmaşık hiyerarşilerde birbirini çağıran nesneler - **Dinamik içerik yapıları**: Koşullu veya hesaplanmış özelliklere sahip içerik ### Faydalar - **Daha net niyet**: Davranış artık neyin değiştirildiği konusunda daha açık - **Daha iyi ayrım**: İçerik dosyaları, doldurulmuş çevirilerden ayrı tutulabilir - **Geliştirilmiş iş akışı**: Geliştiriciler, çevirilerin nerede saklanacağı üzerinde daha fazla kontrole sahiptir - **Karmaşık yapı desteği**: Birbirine bağlı birden fazla nesne içeren karmaşık içerik mimarilerini yönetir ### Örnek kullanım ```typescript // Mevcut dosyayı tüm yerellerle yeniden yaz const content = { key: "example", fill: true, // Bu dosyayı yeniden yazar content: { title: "Hello World", }, }; // Mevcut dosyayı değiştirmeden ayrı dosyayı doldur const content = { key: "example", fill: "./translations.json", // translations.json dosyasını oluşturur/günceller content: { title: "Hello World", }, }; // Otomatik doldurmayı devre dışı bırak const content = { key: "example", fill: false, // Otomatik doldurma yok content: { title: "Merhaba Dünya", }, }; // Bileşik nesnelerle karmaşık içerik yapısı const sharedContent = { buttons: { save: "Kaydet", cancel: "İptal", }, }; const content = { key: "karmaşık-örnek", fill: true, content: { // Diğer nesnelere referanslar sharedContent, // Yapılandırılmış içerik ...sharedContent, // İç içe referanslar sections: [ { ...sharedContent.buttons, header: "Bölüm 1", }, ], }, }; ``` --- ## Geliştirilmiş kararlılık ve çeviri yönetimi v7, içerik çevirisini daha güvenilir ve verimli hale getirmek için birkaç iyileştirme sunar: ### Tam içerik beyan dosyası güncellemeleri Sistem artık kısmi güncellemeler yerine `.content.{ts,js,cjs,mjs}` dosyalarını günceller, böylece şunları sağlar: - **Veri bütünlüğü**: Tam dosya yeniden yazımları, içeriğin bozulmasına yol açabilecek kısmi güncellemeleri engeller - **Tutarlılık**: Tüm yereller atomik olarak güncellenir, senkronizasyon korunur - **Güvenilirlik**: Eksik veya hatalı içerik dosyası riskini azaltır ### Akıllı yeniden deneme yönetimi Yeni yeniden deneme mekanizmaları, içeriğin yanlış formatlarda gönderilmesini önler ve bir isteğin başarısız olması durumunda tüm doldurma sürecinin kırılmasını engeller. ### Daha hızlı işlem için paralelleştirme Çeviri işlemleri artık paralel çalıştırılmak üzere bir kuyruğa alınır. Bu, süreci önemli ölçüde hızlandırır. ### Büyük dosyalar için akıllı parçalara ayırma Gelişmiş parçalara ayırma stratejileri, AI bağlam pencerelerini aşmadan büyük içerik dosyalarını yönetir: ### Örnek iş akışı ```typescript // Büyük içerik dosyası otomatik olarak parçalara ayrılır const content = { key: "large-documentation", fill: true, content: { // AI işleme için büyük içerik otomatik olarak parçalara ayrılır introduction: "..." // 5000+ karakter sections: [ // Birden çok büyük bölüm ] } }; ``` Sistem otomatik olarak: 1. İçerik boyutunu ve yapısını analiz eder 2. İçeriği uygun şekilde parçalara böler 3. Parçaları paralel olarak işler 4. Gerekirse doğrulama yapar ve yeniden dener 5. Tam dosyayı yeniden oluşturur --- ## v6'dan geçiş notları ### Kaldırılan yapılandırmalar - **`middleware.cookieName`**: `routing.storage` ile değiştirildi - **`middleware.serverSetCookie`**: `routing.storage` ile değiştirildi - **`middleware.prefixDefault`**: `routing.mode` ile değiştirildi - **`middleware.noPrefix`**: `routing.mode` ile değiştirildi ### Geçiş eşlemesi #### Konfigürasyon eşlemesi | v6 Konfigürasyonu | v7 Konfigürasyonu | | -------------------------- | -------------------------------------------------------- | | `autoFill: xxx` | `fill: xxx` | | `prefixDefault: false` | `mode: 'prefix-no-default'` | | `prefixDefault: true` | `mode: 'prefix-all'` | | `noPrefix: true` | `mode: 'no-prefix'` | | `cookieName: 'my-locale'` | `storage: { type: 'cookie', name: 'my-locale' }` | | `serverSetCookie: 'never'` | `storage: false` veya storage dizisinden cookie kaldırın | #### Örnek geçiş **Önce (v6):** ```typescript export default { middleware: { headerName: "x-intlayer-locale", cookieName: "intlayer-locale", prefixDefault: false, basePath: "", serverSetCookie: "always", noPrefix: false, }, }; ``` **Sonra (v7):** ```typescript export default { routing: { mode: "prefix-no-default", storage: "localStorage", // veya çerez depolama gerekiyorsa 'cookie' headerName: "x-intlayer-locale", basePath: "", }, }; ``` #### Sözlük içerik eşlemesi | v6 Sözlük içeriği | v7 Sözlük içeriği | | ----------------- | ----------------- | | `autoFill: xxx` | `fill: xxx` | #### Örnek geçiş **Önce (v6):** ```typescript const content = { key: "example", autoFill: true, // Bu dosyayı yeniden yazar content: { title: "Merhaba Dünya", }, }; ``` **Sonrası (v7):** ```typescript const content = { key: "example", fill: true, // Bu dosyayı yeniden yazar content: { title: "Merhaba Dünya", }, }; ``` --- ## v5'ten v6'ya Geçiş Notları Daha fazla bilgi için [v5'ten v6'ya geçiş notlarını](https://github.com/aymericzip/intlayer/blob/main/docs/docs/tr/releases/v6.md) kontrol edin. --- ## Faydalı bağlantılar - [Yapılandırma Referansı](https://github.com/aymericzip/intlayer/blob/main/docs/docs/tr/configuration.md) - [Middleware Dokümantasyonu](https://github.com/aymericzip/intlayer/blob/main/docs/docs/tr/packages/next-intlayer/index.md) - [TypeScript Türleri](https://github.com/aymericzip/intlayer/blob/main/packages/%40intlayer/types/src/index.ts) - [GDPR Çerez Rehberi](https://gdpr.eu/cookies/)