Sorunuzu sorun ve bu sayfaya ve seçtiğiniz AI sağlayıcısına referans vererek belgenin bir özetini alın
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
i18next VS Intlayer: React & Next.js Uluslararasılaştırma (i18n) Benchmark Karşılaştırması

i18next, JavaScript ekosisteminde en yaygın kullanılan i18n kütüphanesidir. react-i18next ve next-i18next aracılığıyla çok sayıda React ve Next.js uygulamasını destekler. Intlayer ise derleyici tabanlı ve bileşen kapsamlı (component-scoped) modern bir alternatiftir.
Bu makale iki aracı özellik listeleri yerine somut ölçümlerle karşılaştırır. Rakamlar, her kütüphaneyle aynı uygulamayı oluşturan ve tarayıcının gerçekte ne indirdiğini kaydeden açık kaynaklı bir test paketi olan Benchmark Bloom projesinden alınmıştır.
Özet (tl;dr):i18next, bu benchmark testindeki en ağır çalışma zamanıdır (runtime): Standart (naive) kurulumda Next.js üzerinde sayfa başına +77 KB gzip, tam ad alanı (namespace) ve tembel yükleme (lazy-loading) optimizasyonundan sonra bile +22 KB ek yük getirir. Intlayer ise yalnızca +0.3 KB ekler. Tamamen izole edilmiş (scoped) kurulum dışındaki tümi18nextyapılandırmaları, kullanıcının bulunmadığı diğer sayfaların çeviri metinlerinin yaklaşık %90'ını sızdırır; Intlayer ise varsayılan olarak %0 sızıntı ile çalışır. Tembel yüklenen bir backend ile dil değiştirmekreact-i18nextile 123-185 ms sürerken Intlayer ile yalnızca 3-4 ms sürmüştür.i18nextAPI'sini koruyan@intlayer/next-i18nextuyumluluk adaptörü, sayfa boyutunu orijinalin 218.5 KB seviyesinden 150.7 KB seviyesine düşürmüştür.
Kısaca Özet
- i18next / react-i18next / next-i18next - Olgun, zengin eklenti ekosistemine sahip ve çatıdan bağımsız (framework-agnostic). Ad alanları, dil algılayıcıları, arka uçlar, eklenti üzerinden ICU ve zengin içerikler için
<Trans>desteği sunar. İçeriklerlocales/{lng}/{ns}.jsonaltında merkezi olarak toplanır. Güçlüdür ancak her optimizasyonu (ad alanı ayrımı, sayfa bazlı yükleme, tip güvenliği) geliştiricinin manuel olarak yapılandırmasını ve sürdürmesini gerektirir. - Intlayer - Bileşen odaklı içerik modeli.
.content.tssözlükleri doğrudan hizmet ettikleri bileşenin yanında yer alır; derleme zamanı derleyicisi bileşen ve dil bazında ağaç budama (tree-shaking) ve tembel yükleme uygular, içerikten katı TypeScript tipleri otomatik oluşturulur ve eksik çeviriler derleme anında hata verir. Dahili middleware, SEO yardımcıları, Görsel Editör / CMS ve yapay zeka destekli çeviri sunar.
Tüm veri içeriğini net bir şekilde görmek için tabloyu modalde açın
Rozetler otomatik olarak güncellenir. Değerler zamanla değişiklik gösterebilir.
Özellik Karşılaştırması
Tüm veri içeriğini net bir şekilde görmek için tabloyu modalde açın
| Özellik | Intlayer (react-intlayer / next-intlayer) | i18next (react-i18next / next-i18next) |
|---|---|---|
| Bileşen yanında çeviri tanımlama | ✅ Evet, her bileşenle aynı dizinde .content.ts | ❌ Hayır, locales/{lng}/{ns}.json altında merkezi yapı |
| TypeScript entegrasyonu | ✅ İçerikten otomatik olarak üretilen katı tipler | ⚠️ Temel; katı anahtarlar için CustomTypeOptions genişletmesi gereklidir |
| Eksik çeviri tespiti | ✅ TypeScript hatası + derleme anında hata/uyarı | ⚠️ Çalışma zamanı yedeği (saveMissing, anahtarın kendisini döndürme) |
| Zengin içerik (JSX / Markdown / bileşenler) | ✅ Doğrudan yerel destek | ⚠️ Numaralı etiketlerle <Trans> bileşeni |
| ICU desteği | ⚠️ Geliştirilme aşamasında | ⚠️ Eklenti ile (i18next-icu) |
| Çoğullaştırma (Pluralization) | ✅ Numaralandırma (enum) tabanlı açık modeller | ✅ _one / _other sonekleri (Intl.PluralRules) |
| Biçimlendirme (tarih, sayı, para birimi) | ✅ useNumber, useDate, ... (yerel Intl desteği) | ⚠️ İnterpolasyon biçimlendiricileri veya manuel Intl.* çağrıları |
| Yerelleştirilmiş yönlendirme ve middleware | ✅ Yerleşik proxy/middleware desteği, getMultilingualUrls | ⚠️ Çekirdeğe dahil değil; özel middleware veya üçüncü taraf araçlar gerekir |
| SEO yardımcıları (hreflang, sitemap, robots) | ✅ Yerleşik yardımcılar | ❌ Manuel kurulum gerekir |
| Eşzamanlı sunucu bileşenleri (RSC) | ✅ next-intlayer/server altındaki useIntlayer tüm sunucu bileşenlerinde çalışır | ⚠️ Sayfa seviyesinde getFixedT çağrısı yapıp t'yi Props ile aktarma |
| Tree-shaking (yalnızca kullanılan içerik) | ✅ Bileşen ve dil bazında derleyici tarafından otomatik yapılır | ⚠️ Manuel: ad alanları + sayfa başına ns listesi + arka uç yapılandırması |
| Tembel yükleme (Lazy loading) | ✅ importMode: 'dynamic' (tek satırlık yapılandırma) | ✅ Arka uç eklentileri aracılığıyla (i18next-resources-to-backend vb.) |
| Kullanılmayan içeriğin temizlenmesi | ✅ Kullanılmayan sözlükler derleme anında elenir | ❌ Yerleşik destek yok |
| Eksik çeviri testleri (CLI / CI) | ✅ npx intlayer content test | ⚠️ i18next-parser veya harici araçlar |
| Yapay zeka destekli çeviri | ✅ Yerleşik, kendi API anahtarlarınızı kullanır | ❌ Yok (Locize ayrı ve ücretli bir platformdur) |
| Görsel Editör / CMS | ✅ Ücretsiz Görsel Editör + isteğe bağlı CMS | ❌ Yok (Locize veya harici sistemler gerektirir) |
| MCP Sunucusu & Agent Skills | ✅ Desteklenir | ❌ Desteklenmez |
| Ekosistem ve topluluk | ⚠️ Daha yeni ancak hızla büyüyor | ✅ En büyük ve en olgun ekosistem |
Benchmark Testi
Neler Ölçüldü?
Benchmark Bloom test paketi, her kütüphane ile birebir aynı uygulamayı inşa eder: 10 sayfa (home, about, blog, careers, contact, FAQ, pricing, products, settings, team), 10 dil (en, fr, es, de, it, pt, zh, ja, ko, ru), özdeş bileşenler ve özdeş içerik. Sayfalar İngilizce (en) ve Fransızca (fr) olarak test edilir. Her kütüphane dört farklı yükleme stratejisi ile değerlendirilir:
Tüm veri içeriğini net bir şekilde görmek için tabloyu modalde açın
| Strateji | Açıklama | Tipik Kullanım Alanı |
|---|---|---|
| static | Tüm diller ve tüm sayfalar tek pakette toplanır (init() içinde satır içi resources) | Hızlı prototipler, yapay zeka kodları |
| dynamic | Yalnızca aktif dil arka uçtan yüklenir, ancak tüm ad alanları tek seferde gelir | Çoğu standart proje |
| scoped-static | Rota başına bir ad alanı ayrılır, tümü baştan ana pakete dahil edilir | Nadir görülen yapılandırmalar |
| scoped-dynamic | Rota başına ad alanı + arka uç tembel yükleme. Yalnızca mevcut sayfa ve mevcut dil gelir | Katı performans bütçesi olan uygulamalar |
Intlayer için ayrı bir "scoped" varyantına ihtiyaç yoktur: Derleyici, içeriği bileşen düzeyinde otomatik olarak izole eder; bu nedenle static ve dynamic satırları zaten en iyi düzeyde optimize edilmiştir.
Her derleme için kaydedilen metrikler:
- Lib size: Yalnızca i18n kütüphanesini içe aktaran boş bir bileşenin gzip boyutu. Çalışma zamanının sabit maliyeti.
- Page JS: Sayfa başına indirilen ortalama JavaScript gzip boyutu (tüm sayfalar ve diller genelinde).
- Locale leak %: İndirilen JS içerisindeki, kullanıcının görüntülemediği bir dile ait çeviri metinlerinin oranı.
- Page leak %: İndirilen JS içerisindeki, kullanıcının bulunmadığı diğer sayfalara ait çeviri metinlerinin oranı.
- Component avg: İzole olarak derlenen her bir bileşenin ortalama gzip boyutu.
- E2E reactivity: Yeni bir dil seçimi ile DOM'da
html[lang]etiketinin güncellenmesi arasındaki gerçek süre (Playwright, 5 deneme ortalaması). - Hydration: React hidrasyon (hydration) aşamasının süresi.
Aşağıdaki verilernext-i18next16.3.0,react-i18next17.0.13 veintlayer9.5.1 sürümleriyle yapılan 2026-09-12 tarihli test çalıştırmasından alınmıştır. Test uygulaması bilinçli olarak kompakt tutulmuştur; bu nedenle sızıntı yüzdeleri yapısal bir örüntüyü temsil eder: İçeriğiniz büyüdükçe sızıntı katlanarak artarken çalışma zamanı maliyeti sabit kalır.
Next.js Sonuçları (next-i18next)
İlgilendiğiniz metrikleri ve kütüphaneleri seçin:
Metrik
Dinamik JSON yükleme
Çevirileri çalışma zamanında geç yükler
Kapsamlı JSON (ad alanı oluşturma)
Sayfa başına çeviri ad alanları
Bu metrik nedir?
Uluslararasılaştırma kitaplığı paketinin toplam gzip sıkıştırılmış boyutu. Sadece ağaç sallama (tree-shaking) ve küçültme (minification) sonrası sağlayıcı ve içerik getirme mantığını içerir.
Neden önemlidir?
Daha küçük bir kitaplık boyutu, başlangıç JavaScript yükünü azaltarak istemci tarafında daha hızlı indirme ve yürütme sürelerine yol açar.
Olarak gör
Tüm veri içeriğini net bir şekilde görmek için tabloyu modalde açın
| Kütüphane | Strateji | Lib size (gz) | Page JS avg (gz) | Dil Sızıntısı | Sayfa Sızıntısı | Bileşen Ort. (gz) | E2E Tepki Süresi | Hydration |
|---|---|---|---|---|---|---|---|---|
| base (i18n yok) | - | 0.0 KB | 141.0 KB | 0.0% | 0.0% | 0.9 KB | 13.4 ms | 11.8 ms |
next-i18next | static | 19.7 KB | 218.5 KB | 0.0% | 89.8% | 78.5 KB | 16.4 ms | 15.6 ms |
next-i18next | dynamic | 19.7 KB | 169.5 KB | 50.0% | 89.8% | 26.1 KB | 15.4 ms | 27.7 ms |
next-i18next | scoped-static | 19.7 KB | 220.1 KB | 0.0% | 89.8% | 78.9 KB | 16.4 ms | 14.7 ms |
next-i18next | scoped-dynamic | 19.7 KB | 163.4 KB | 0.0% | 0.0% | 27.1 KB | 15.9 ms | 15.1 ms |
next-intlayer | static | 5.5 KB | 141.3 KB | 0.0% | 0.0% | 8.5 KB | 15.5 ms | 16.9 ms |
next-intlayer | dynamic | 5.5 KB | 141.3 KB | 0.0% | 0.0% | 6.9 KB | 15.3 ms | 15.9 ms |
@intlayer/next-i18next (uyumlu) | static | 9.4 KB | 150.7 KB | 0.0% | 0.0% | 9.7 KB | 10.7 ms | 11.3 ms |
@intlayer/next-i18next (uyumlu) | dynamic | 9.4 KB | 150.7 KB | 0.0% | 0.0% | 9.7 KB | 11.9 ms | 10.6 ms |
Sonuçların Analizi
- Çalışma zamanı maliyeti:
i18nextçekirdeği ilereact-i18nextbirlikte test edilen en ağır çalışma zamanıdır: Boş bir bileşen için 19.7 KB gzip yer tutarken,next-intlayeryalnızca 5.5 KB tüketir. - Standart kurulum maliyetlidir:
init()içineresourcesdoğrudan yerleştirildiğinde sayfa başına 218.5 KB boyuta ulaşılır; bu da temel uygulamaya göre +77.5 KB fazlalıktır. Her sayfa tüm ad alanlarını taşımak zorunda kalır. - Manuel optimizasyon zahmetlidir: Bir arka uca (
dynamic) geçmek 49 KB tasarruf sağlar ancak başka sayfalara ait metinlerin %90'ını sızdırmaya devam eder ve bu kurulumda indirilen metinlerin yarısı yanlış dile aittir. Rota bazlı ad alanlarına (scoped-dynamic) geçildiğinde sızıntı %0'a inse de ulaşılan 163.4 KB boyutu, hiçbir manuel ayar gerektirmeyen Intlayer'ın (141.3 KB) sayfa başına 22.4 KB üzerindedir. - Bileşen boyutu:
useTranslation()kullanan bir bileşen 26-79 KB boyutunda derlenirken, aynı bileşenuseIntlayer()ile yalnızca 6.9 KB yer kaplar. - Hidrasyon gecikmesi:
dynamickurulumunda hidrasyon süresi 27.7 ms'ye yükselir; çünkü React hidrasyona başlamadan önce istemcide i18next örneğinin başlatılması ve arka uçtan veri alması gerekir.
Tüm kütüphaneler ve her strateji için tam tablo Next.js kıyaslama raporunda.
TanStack Start Sonuçları (react-i18next)
Next.js'e özgü yapılandırmaları dışarıda bırakmak adına TanStack Start üzerinde doğrudan react-i18next ile yapılan ölçümler:
Tüm veri içeriğini net bir şekilde görmek için tabloyu modalde açın
| Kütüphane | Strateji | Lib size (gz) | Page JS avg (gz) | Dil Sızıntısı | Sayfa Sızıntısı | Bileşen Ort. (gz) | E2E Tepki Süresi | Hydration |
|---|---|---|---|---|---|---|---|---|
| base (i18n yok) | - | 0.0 KB | 111.0 KB | 0.0% | 0.0% | 0.7 KB | 8.1 ms | 21.6 ms |
react-i18next | static | 18.4 KB | 180.3 KB | 50.0% | 89.8% | 24.3 KB | 12.9 ms | 85.1 ms |
react-i18next | dynamic | 18.4 KB | 136.4 KB | 23.1% | 89.8% | 24.8 KB | 123.1 ms | 32.9 ms |
react-i18next | scoped-static | 18.4 KB | 184.2 KB | 50.7% | 89.8% | 25.3 KB | 185.1 ms | 25.2 ms |
react-i18next | scoped-dynamic | 18.4 KB | 127.2 KB | 0.0% | 0.0% | 26.7 KB | 17.6 ms | 11.3 ms |
intlayer | static | 5.0 KB | 125.8 KB | 50.0% | 0.0% | 8.1 KB | 3.2 ms | 11.5 ms |
intlayer | dynamic | 5.0 KB | 118.6 KB | 0.0% | 0.0% | 6.3 KB | 3.6 ms | 14.1 ms |
Sonuçların Analizi
- Standart
react-i18nextuygulaması temel uygulamaya kıyasla sayfa başına +69 KB fazla kod taşır ve hidrasyon 85 ms (temelin 4 katı) sürer; çünkü tüm kaynak ağacı ilk render öncesinde istemcide işlenir ve kaydedilir. - Dil değişiminde gecikme: Kaynaklar arka uç üzerinden tembel yüklendiğinde, dili değiştirmek
html[lang]güncellenmeden önce bir ağ gidiş-dönüşü (round-trip) gerektirir:dynamicmodunda 123 ms,scoped-staticmodunda 185 ms. Intlayer ise her iki modda da DOM'u 3-4 ms içinde günceller; dil değişimi ağ çağrılarına takılmadan anında gerçekleşir. - Tamamen optimize edilmiş
scoped-dynamicyapılandırması 127.2 KB seviyesine inse de, Intlayer'ındynamicsatırından +8.6 KB daha ağırdır ve bu sonuca ulaşmak için rota-ad alanı eşleme haritası, arka uç yükleyicisi ve Suspense sınırları gerekmiştir. - Intlayer'ın
staticmodu, yalnızca ilgili sayfanın bileşenleri tarafından içe aktarılan sözlükleri paketlediği için zaten %0 sayfa sızıntısına sahiptir.importMode: 'dynamic'ayarını açmak dil sızıntısını da tamamen ortadan kaldırır. - Bileşen boyutu:
react-i18nextile bileşen başına 24-27 KB iken Intlayer ile 6-8 KB seviyesindedir.
Tam tablo TanStack Start kıyaslama raporunda.
Fark Nereden Kaynaklanıyor? Global Örnek vs Derlenmiş Sözlükler

i18next, 2012 yılında bir çalışma zamanı kütüphanesi olarak tasarlandı: Global bir örnek kaynak deposunu tutar, eklentiler bunu genişletir ve t() render anında anahtarları arar. Bu yapı ona yüksek esneklik kazandırsa da performans açısından ağır bir yük getirir:
Kodu panoya kopyala
Global örnek, bileşenin hangi anahtarlara ihtiyaç duyacağını önceden bilemez; bu nedenle yüklemesi söylenen tüm ad alanlarını bellekte tutar. Optimizasyon yapmak sizin katalogları bölmenizi, sizin her sayfanın ihtiyaç duyduğu ad alanlarını listelemenizi ve bileşenler taşındıkça bu listeyi elle güncellemenizi gerektirir.
Maliyet iki eksende birden büyür, sayfalar ve diller:

Benchmark notlarında ifade edildiği gibi: "Tip güvenliğini korurken hangi sayfaya hangi ad alanının dahil edileceğini tam olarak bilmek tam bir kabustur".
Intlayer global örneği tamamen ortadan kaldırır. İçerik doğrudan bileşenin yanında tanımlanır ve derleyici bağımlılık grafiğini derleme zamanında çözer:
Kodu panoya kopyala
@intlayer/swc / @intlayer/babel hangi bileşenin hangi sözlüğü kullandığını tespit eder, yalnızca bunları ve yalnızca aktif dil için paketler, kullanılmayan içerikleri eler. "scoped-dynamic" kalıbı, ekibin yönetmek zorunda olduğu bir kural yerine derlemenin otomatik bir çıktısı haline gelir.
dynamicsatırındaki rakamları elde etmek içinintlayer.config.tsdosyasındadictionary.importMode: 'dynamic'ayarını yapmanız yeterlidir. Ayrıntılar için paket optimizasyonu kılavuzuna bakın.
Geliştirici Deneyimi (DX)
Kurulum Karşılaştırması
Kodu panoya kopyala
Bunun yanı sıra istemci tarafı I18nProvider, generateStaticParams ve her sayfada ad alanı dizisi tanımlanmalıdır.
Kodu panoya kopyala
Kodu panoya kopyala
İstemci Bileşeni (Client Component)
Kodu panoya kopyala
Kodu panoya kopyala
Bu bileşeni kullanan sayfaaboutad alanını yüklemek zorundadır veCustomTypeOptionsgenişletilmedikçet("counter.label")düz bir metinden ibarettir.
Kodu panoya kopyala
Kodu panoya kopyala
label ve increment katı tiplere sahiptir; yazım hataları anında TypeScript hatası verir ve eksik çeviriler derlemeyi durdurur.
Eşzamanlı Sunucu Bileşeni (Server Component)
Kodu panoya kopyala
Sayfa seviyesinde i18n.getFixedT(locale, "about") çağrılmalı ve t ile locale bileşene prop olarak aktarılmalıdır.
Kodu panoya kopyala
i18next API'sini Koruyarak Intlayer Performansına Erişin
Yukarıdaki benchmark kazanımlarını elde etmek için bileşenlerinizi sıfırdan yeniden yazmak zorunda değilsiniz. @intlayer/i18next, @intlayer/react-i18next ve @intlayer/next-i18next uyumluluk adaptörleri tak-çalıştır niteliğindedir: useTranslation, t(), <Trans>, çoğullaştırmalar ve bağlam sonekleri Intlayer derleyicisi tarafından optimize edilen sözlükler üzerinden çalışmaya devam eder.
Kodu panoya kopyala
Kodu panoya kopyala
Benchmark testinde, aynı Next.js uygulamasının uyumluluk derlemesi kodlara dokunulmadan sayfa başına 218.5 KB'tan 150.7 KB'a, bileşen başına 78.5 KB'tan 9.7 KB'a, sayfa sızıntısı ~%90'dan %0'a gerilemiş ve hidrasyon süresi 15.6 ms'den 11.3 ms'ye düşmüştür. Mevcut locales/{lng}/{ns}.json dosyalarınız JSON senkronizasyon eklentisi sayesinde ana kaynak olarak kalabilir.
Geçiş kılavuzlarına göz atın: i18next, react-i18next, next-i18next.
Hangisini Ne Zaman Seçmeli?
Geniş eklenti ekosistemine (özel algılayıcılar, arka uçlar, ICU, Locize) kesin olarak ihtiyacınız varsa, React dışı alanlarda da (Node servisleri, vanilla JS, diğer çatılar) yerelleştirme yapıyorsanız, ekibiniz bu araca zaten hakimse veya harici çeviri platformunuz locales/{lng}/{ns}.json biçimini zorunlu kılıyorsa. Ancak performans önemliyse ad alanlarını ve rota haritalarını yönetmek için zaman ayırmayı unutmayın.
Bileşen düzeyinde içerik, katı TypeScript, derleme zamanı eksik anahtar hataları, zahmetsiz tree-shaking ve lazy loading, anında dil değişimi, eşzamanlı sunucu bileşenleri ve yerleşik düzenleme araçları (Görsel Düzenleyici, CMS, Yapay Zeka Çevirisi, MCP Sunucusu) istiyorsanız. Özellikle büyük, modüler kod tabanları ve tasarım sistemleri için uygundur.
Zaten i18next kullanıyorsanız ve bileşenleri yeniden yazmadan paket ve tepkisellik kazanımlarını elde etmek istiyorsanız. locales/{lng}/{ns}.json dosyalarınız gerçek kaynak olarak kalır. i18next vs @intlayer/i18next makalesinde yan yana ölçülmüştür.
SSS (Sıkça Sorulan Sorular)
Framework'ten bağımsız bir çalışma zamanı olarak tasarlandı: global bir örnek, bir eklenti hattı, bir kaynak deposu, bir anahtar çözümleyici. Bu esneklik her pakete derlenir. Yalnızca kütüphaneyi içe aktaran boş bir bileşen next-i18next ile 19.7 KB gzip, next-intlayer ile 5.5 KB maliyete sahiptir ve bu maliyet içeriğiniz ne olursa olsun her sayfada ödenir.
Baytları çözer, gecikmeyi çözmez. i18next-resources-to-backende geçmek sayfa başına ~49 KB kazandırır ancak dil geçişine bir ağ gidiş-dönüşü ekler: dynamic kurulumda 123 ms, scoped-static kurulumda 185 ms, Intlayer ile 3-4 ms. Hidrasyon da 27.7 ms'ye fırlar çünkü React hidrasyon yapmadan önce örnek kendi backend'ini çözümler.
Evet, scoped-dynamic ile: rota başına bir namespace, bir kaynak backend'i ve elle tuttuğunuz bir sayfa-namespace haritası. Next.js'te sayfa başına 163.4 KB'a ulaşır; bu da hiçbir yapılandırma gerektirmeyen Intlayer'ın 141.3 KB değerinden hala +22 KB fazladır. Bkz. paket optimizasyonu.
Hayır. @intlayer/i18next, @intlayer/react-i18next ve @intlayer/next-i18next; useTranslation, t(), <Trans>, {{interpolation}}, _one / _other çoğulları, bağlam son ekleri ve returnObjectsi korur. next.config.ts veya vite.config.ts içine tek bir eklenti satırı yeterlidir. next-i18next geçiş kılavuzunda adım adım anlatılmıştır.
Backend'ler ve dil algılayıcılar kabul edilir ancak devre dışı kalır: çalışma zamanında yüklenecek veya algılanacak hiçbir şey kalmaz. Dil algılama, Intlayer'ın yönlendirme yapılandırmasına dönüşür (URL öneki, çerez, başlık). Uygulamanız istek anında bir CMS'den çevirileri alıyorsa, bunun yerine Intlayer CMS veya intlayer pull / push kullanın.
İlgili Karşılaştırmalar
Aynı kıyaslama, diğer kütüphaneler:
i18next hakkında daha fazlası:
Referans belgeleri:
Uyumluluk adaptörleri:
Geçiş kılavuzları:
Bu kütüphanelerin nereden geldiğini anlamak için JavaScript i18n tarihini okuyun.
GitHub Yıldızları
GitHub yıldızları bir projenin popülerliğini, topluluk güvenini ve uzun vadeli sürdürülebilirliğini yansıtır. Tek başına teknik kaliteyi kanıtlamasa da, kaç geliştiricinin projeyi faydalı bulduğunu ve benimsediğini gösterir.
Commit etkinliği
Yıldızlar popülerliği gösterir. Commit sayısı ise bir projeye ne kadar emek verildiğini gösterir. Bu yazı yazıldığında Intlayer yaklaşık 7.500 commit içeriyor; bu, burada karşılaştırılan kütüphanelerin çoğundan fazla ve next-intl ya da next-i18next kütüphanesinin yaklaşık 5 katı.
- i18next/i18next
- i18next/react-i18next
- i18next/next-i18next
- aymericzip/intlayer
Varsayılan daldaki commit sayısı, kaynak: GitHub API.
Intlayer bir monorepo olduğundan bu sayı her framework paketini, CLI'yi ve dokümantasyonu kapsar. Commit sayısını kalitenin değil, etkinliğin bir göstergesi olarak okuyun.
npm indirmeleri
- i18next
- react-i18next
- next-i18next
- intlayer
Kaynak: npm kayıt defteri indirme API’si.
İndirme sayıları en iyi çözümleri değil, en eski çözümleri ödüllendirir. Yıllar önce yayımlanmış bir kütüphane, onu o zaman seçen her proje, her CI çalışması ve ona bağımlı her paket tarafından hâlâ kurulur. Bu sayı yeni bir tercihten çok ataleti ölçer.
Yapay zekâ asistanları bu etkiyi büyütür. next-intl, i18next ve vue-i18n eğitildikleri kodun her yerinde bulunduğu için, alternatifleri karşılaştırmadan bunları varsayılan olarak önerirler. Her öneri indirme sayısını artırır, bu da bir sonraki öneriyi besler. İndirme sayısına değil, benchmark sonuçlarına göre karşılaştırın.
Sonuç
i18next hak ettiği konuma sahiptir: Her ortamda çalışır, her senaryo için bir eklentisi vardır ve 10 yılı aşkın süredir geliştirilmektedir. Ancak bu benchmark, çalışma zamanı odaklı mimarinin getirdiği maliyeti açıkça göstermektedir. Standart yapılandırma sayfa başına +70-77 KB gzip ek yük getirmekte, diğer sayfalara ait içeriğin ~%90'ını sızdırmakta ve dil değişimi 100 ms'nin üzerinde sürmektedir. Sızıntıyı sıfıra indirmek mümkündür ancak bu da karmaşık bir manuel takip gerektirir ve yine de Intlayer'dan 9-22 KB daha ağırdır.
Intlayer bu iş yükünü derleyiciye devreder. Bileşen başına sözlükler, dil başına tembel yükleme ve gereksiz metinlerin ayıklanması derlemenin otomatik sonuçlarıdır. Aynı uygulamada: Sayfa başına yalnızca +0.3 KB, %0 sızıntı, 3 ila 10 kat daha küçük bileşenler ve 3-4 ms içinde dil değişimi.
Tüm ham veriler, test uygulamaları ve otomasyon komutları Benchmark Bloom deposunda herkese açıktır. Kendiniz test edebilirsiniz.
Daha fazla bilgi için 'Neden Intlayer?' dokümanını inceleyin.
Yorumlar
Henüz yorum yok. Düşüncelerinizi paylaşan ilk kişi olun.
