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
- "İlk sürüm"v9.5.1026.09.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
2026 Yılında use-intl Kullanarak TanStack Start Uygulamanızı Nasıl Uluslararasılaştırırsınız?
İçindekiler
use-intl Nedir?
use-intl, next-intl kütüphanesinin çatıdan bağımsız (framework-agnostic) çekirdeğidir. Next.js'e herhangi bir bağımlılığı olmadan aynı useTranslations, useFormatter ve IntlProvider API'lerini, ICU MessageFormat desteğini ve güçlü TypeScript entegrasyonunu sunar. Bu durum, onu bir TanStack Start uygulamasını yerelleştirmek için en popüler seçeneklerden biri yapar ve yapay zeka asistanlarının bu teknoloji yığını için en sık önerdiği kütüphanedir.
TanStack Start yerleşik bir i18n katmanı içermez. Yönlendirme (routing), dil algılama, SEO meta verileri ve site haritası oluşturma işlemleri geliştiriciye bırakılmıştır. Bu rehber tüm bu süreçleri baştan sona ele almaktadır:
- İsteğe bağlı
{-$locale}segmenti ile dil duyarlı yönlendirme (/about,/fr/about). - Bir sayfanın yalnızca oluşturduğu ad alanlarını ve dili indirmesini sağlayan rota başına mesaj yükleme.
- Metin uyuşmazlığı olmadan sunucu taraflı işleme (SSR) ve hidrasyon.
- Eksiksiz çok dilli SEO: çevrilmiş
<title>ve açıklama, standart (canonical) URL,x-defaultiçerenhreflangalternatifleri, Open Graph dilleri, JSON-LD,xhtml:linkalternatifli site haritası,robots.txtve her dilin önceden işlenmesi (pre-rendering).
Farklı bir teknoloji yığını mı arıyorsunuz? TanStack Start + Paraglide rehberi, TanStack Start + Lingui rehberi veya TanStack Start + Intlayer rehberi sayfalarına göz atabilirsiniz.
Bunun yerine Next.js mi kullanıyorsunuz? next-intl rehberi sayfasına bakın.
TanStack Start Üzerinde use-intl Kıyaslama (Benchmark) Sonuçları
i18n kıyaslama testi, her önemli kütüphane ile aynı 10 sayfalık ve 10 dilli TanStack Start uygulamasını çalıştırır ve tarayıcının gerçekte ne kadar veri indirdiğini ölçer.
Dinamik JSON yükleme
Çevirileri çalışma zamanında geç yükler
Kapsamlı JSON (ad alanı oluşturma)
Sayfa başına çeviri ad alanları
I18n Performans Karşılaştırması
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
2026-09-26 tarihinde ölçülen use-intl@4.14.2 için temel değerler (gzip):
Tüm veri içeriğini net bir şekilde görmek için tabloyu modalde açın
| Kurulum | Kütüphane boyutu | Sayfa başına JS | Diğer dil sızıntısı | Diğer sayfa sızıntısı |
|---|---|---|---|---|
| i18n yok (temel uygulama) | - | 111.0 KB | 0% | 0% |
use-intl (bu rehberdeki kurulum) | 75.9 KB | 128.7 KB | 0% | 0% |
@intlayer/use-intl (uyumluluk) | 6.7 KB | 129.4 KB | 0% | 0% |
react-intlayer (yerel Intlayer) | 4.5 KB | 126.8 KB | 0% | 0% |
Çıkarılması gereken temel sonuçlar:
- Mesajları sayfaya göre bölün ve her dil için ayrı yükleyin. Bu, her iki sızıntıyı da ortadan kaldırır ve aşağıdaki adımlarda uygulanan yöntemdir.
- Çalışma zamanının kendisi ağır kalmaktadır (~76 KB gzip), çünkü ICU ayrıştırıcısı istemciye gönderilir.
@intlayer/use-intluyumluluk adaptörü (17. adım), ~7 KB çalışma zamanı ile tamamen aynı API'yi korur.
Tüm verileri inceleyin: TanStack Start kıyaslama raporu ve kıyaslama deposu.
TanStack Start Üzerinde Özellik Karşılaştırması
use-intl kütüphanesinin TanStack Start üzerinde yaygın olarak kullanılan diğer kütüphanelerle karşılaştırması:
Tüm veri içeriğini net bir şekilde görmek için tabloyu modalde açın
| Özellik | react-intlayer (Intlayer) | use-intl | Paraglide JS | Lingui |
|---|---|---|---|---|
| Bileşenlerin yanında çeviriler | ✅ Birlikte konumlandırılmış | ❌ Merkezi JSON | ❌ Dil başına tek JSON dosyası | ⚠️ Bileşen içinde kaynak metin |
| TypeScript entegrasyonu | ✅ Otomatik üretilen tipler | ✅ AppConfig ile | ✅ Tipli mesaj fonksiyonları | ⚠️ Yalnızca makrolar |
| Eksik çeviri algılama | ✅ Tip hataları ve derleme uyarıları | ⚠️ Çalışma zamanı yedeği | ⚠️ Temel dile geri döner | ⚠️ Kaynak metne geri döner |
| Zengin içerik (JSX, Markdown) | ✅ Doğrudan destek | ⚠️ t.rich ile etiketler | ⚠️ Düz metinler | ✅ <Trans> içinde JSX |
| Yerelleştirilmiş yönlendirme | ✅ Yerleşik | ❌ Manuel {-$locale} | ✅ urlPatterns + router rewrite | ❌ Manuel {-$locale} |
| Yenileme olmadan dil değiştirme | ✅ Evet | ✅ Evet | ❌ Tam sayfa yenileme | ✅ Evet |
| Çoğullaştırma (Pluralization) | ✅ Numaralandırma tabanlı | ✅ ICU | ✅ Varyantlar | ✅ ICU |
| ICU MessageFormat | ✅ format: "icu" ile | ✅ Yerel | ⚠️ inlang eklentisi ile | ✅ Yerel |
| İçerik formatları | ✅ .ts, .json, .md, .yaml... | ⚠️ .json | ⚠️ inlang JSON | ✅ PO, JSON, CSV |
| Yapay zeka ile çeviri | ✅ Kendi sağlayıcınız ve anahtarınız | ❌ Yok | ❌ Yok | ❌ Yok |
| Görsel editör / CMS | ✅ Yerel editör + isteğe bağlı CMS | ❌ Harici platformlar | ⚠️ inlang ekosistem uygulamaları | ❌ Harici platformlar |
| SEO yardımcıları (hreflang, sitemap) | ✅ Yerleşik | ❌ Manuel | ⚠️ Yerelleştirilmiş URL'ler, geri kalanı manuel | ❌ Manuel |
| Çalışma zamanı boyutu (gzip) | 4.5 KB | 75.9 KB | 1.8 KB | 56.7 KB |
| Sızıntı, en iyi kurulum (dil / sayfa) | 0% / 0% | 0% / 0% | 49.7% / 0% | 8.6% / 0% |
| CI üzerinde eksik çeviriler | ✅ npx intlayer test | ⚠️ Yerleşik değil | ⚠️ Yerleşik değil | ✅ lingui compile --strict |
Çalışma zamanı boyutu ve sızıntı değerleri TanStack Start kıyaslama testinden alınmıştır. Sızıntı, her kütüphanenin en iyi yapılandırmasında ölçülmüştür.
Diğer TanStack Start rehberleri: Lingui, Paraglide JS ve Intlayer.
Uygulamanız Gereken En İyi Pratikler
- Erişilebilirlik, ekran okuyucular ve arama motorları için
<html>etiketindelangvedirtanımlayın. - Her dil için tek bir URL kullanın. Yalnızca çerez tabanlı bir geçiş yerine dil öneki (
/fr/about) kullanın, böylece her çevrilmiş sayfa taranabilir ve paylaşılabilir olur. - Mesajları ad alanına (namespace) göre bölün (
common,home,about) ve bunları rota bazında yükleyin. - Yalnızca aktif dili yükleyin. İstemciye gönderilen bir modülde asla tüm dil dosyalarını içe aktarmayın.
IntlProvideriçinde saat dilimini sabitleyin. Aksi takdirde tarihler SSR sırasında sunucu saat diliminde, hidrasyonda ise ziyaretçi saat diliminde biçimlendirilir ve bu da hidrasyon uyuşmazlıklarına (hydration mismatch) yol açar.- Meta verilerinizi çevirin ve her sayfada
canonical,hreflangvex-defaulttanımlayın. - Çok dilli bir site haritası ve robots.txt oluşturun ve her dili önceden işleyin (pre-render).
- Arama motoru botlarının her dili keşfedebilmesi için dil değiştirici için
<select>yerine gerçek bağlantılar (linkler) kullanın. - Eksik bir anahtarın derleme zamanında hata vermesi için mesajlarınızı tiplendirin.
Uluslararasılaştırma ve SEO rehberimize ve hreflang rehberine göz atın.
TanStack Start Uygulamasında use-intl Kurulumu İçin Adım Adım Rehber
Oluşturacağımız proje yapısı şu şekildedir:
Kodu panoya kopyala
Bağımlılıkları Yükleyin
Bir TanStack Start projesiyle başlayın ve ardından
use-intlekleyin:bashKodu kopyalaKodu panoya kopyala
- use-intl:
IntlProvider,useTranslations,useFormattervecreateTranslator(React dışında, örneğinhead()içinde kullanılabilir) sağlar.
- use-intl:
Dil Yapılandırmanızı Merkezileştirin
Dilleriniz ve URL yardımcılarınız için tek bir doğruluk kaynağı (source of truth) oluşturun. Diğer tüm dosyalar (rotalar, SEO, site haritası, ön işleme) buradan içe aktarılır, böylece yeni bir dil eklemek tek satırlık bir değişikliktir.
Varsayılan dil öneksiz kalır (
/about), diğer diller ise önek alır (/fr/about). Bu "ihtiyaca göre" stratejisidir: dil başına sayfa başına bir URL ve ana kitleniz için kısa URL'ler.src/i18n/config.tsKodu kopyalaKodu panoya kopyala
Çeviri Dosyalarınızı Oluşturun
Mesajları dile ve ad alanına göre düzenleyin.
common, her sayfanın ihtiyaç duyduğu öğeleri (navigasyon, altbilgi) tutar ve her sayfa meta verileri de dahil olmak üzere kendi dosyasına sahip olur.use-intl ICU MessageFormat kullanır; bu nedenle çoğullar, seçimler ve biçimlendirilmiş bağımsız değişkenler doğrudan iletinin içinde yer alır.
messages/en/common.jsonKodu kopyalaKodu panoya kopyala
messages/en/about.jsonKodu kopyalaKodu panoya kopyala
messages/fr/common.jsonKodu kopyalaKodu panoya kopyala
messages/fr/about.jsonKodu kopyalaKodu panoya kopyala
home.jsondosyasını da aynı şekilde birmetadatanesnesi ve sayfa içeriği ile oluşturun.Mesajları Ad Alanı ve Dil Başına Yükleyin
Bu yükleyici performans açısından en kritik dosyadır.
import.meta.glob, Vite'e her JSON dosyası için bir parça (chunk) oluşturmasını söyler. Fransızca olarak["about"]isteyen bir rotamessages/fr/about.jsondosyasını indirir ve başka hiçbir şey indirmez; kıyaslama testinde %0 dil sızıntısı ve %0 sayfa sızıntısına bu şekilde ulaşılır.src/i18n/messages.tsKodu kopyalaKodu panoya kopyala
Mesajlarınızı Tiplendirin
Modül genişletme (module augmentation),
useTranslations("about")vet("counter.label")üzerinde otomatik tamamlama sağlar ve yazım hatalarında veya silinen anahtarlarda derleme hatası verir.src/i18n/use-intl.d.tsKodu kopyalaKodu panoya kopyala
tsconfig.jsondosyanızdaresolveJsonModuleseçeneğinin etkinleştirildiğinden emin olun.Kök Dokümanı Oluşturun
Kök rota
<html>etiketini işler.langvedirdeğerlerini ayarlamak için isteğe bağlı dil parametresini okur, böylece öznitelikler herhangi bir JavaScript çalışmadan önce sunucu tarafından oluşturulan HTML içinde doğru şekilde yer alır.src/routes/__root.tsxKodu kopyalaKodu panoya kopyala
Dil Düzeni Rotasını Oluşturun
{-$locale}klasörü isteğe bağlı bir yol segmenti oluşturur:/aboutve/fr/aboutyollarının her ikisi de/{-$locale}/aboutile eşleşir. Bu düzen:- Desteklenmeyen önekleri reddeder (
/xx/about→ 404). - Yalnızca geçerli dil için
commonad alanını yükler. - Mesajları
IntlProvideraracılığıyla sağlar.
Yükleyici sonucu HTML içine serileştirilir ve hidrasyonda yeniden kullanılır, böylece istemci
common.jsondosyasını ikinci kez indirmez.staleTime: Infinityistemci geçişlerinde önbellekte tutulmasını sağlar.src/routes/{-$locale}/route.tsxKodu kopyalaKodu panoya kopyala
IntlProviderüst sağlayıcıdan gelen mesajları birleştirmez. Bir sonraki adım bunu gerçekleştiren küçük bir bileşen ekler, böylece her sayfacommonüzerine kendi ad alanını ekleyebilir.- Desteklenmeyen önekleri reddeder (
Sayfa Mesajlarını Kapsamlandırın (Scope)
Her sayfa kendi yükleyicisinde kendi ad alanını yükler ve ardından içeriğini
ScopedMessagesile sarmalar; bu bileşen sayfa ad alanını üst mesajlarla birleştirir.src/components/ScopedMessages.tsxKodu kopyalaKodu panoya kopyala
Sayfalarınızda Çevirileri Kullanın
Sayfa yükleyicisi geçerli dil için
aboutad alanını getirir,head()bundan çevrilmiş ve SEO uyumlu meta veriler oluşturur (13. adıma bakın) ve bileşen içeriği işler.src/routes/{-$locale}/about.tsxKodu kopyalaKodu panoya kopyala
Bileşenlerde Çevirileri ve Biçimlendiricileri Kullanın
Sağlayıcıların altındaki herhangi bir bileşen
useTranslationsveuseFormatterçağırabilir. Çoğullar ICU tarafından çözümlenir ve sayılar aktif dile göre biçimlendirilir.src/components/Counter.tsxKodu kopyalaKodu panoya kopyala
Yerelleştirilmiş Bağlantı Bileşeni Oluşturun
İsteğe bağlıHer rota
{-$locale}altında yer alır, bu nedenle bir bağlantı geçerli dil parametresini taşımalıdır. Bu sarmalayıcı TanStack Router'ın tiplitoözelliğini korur ve dil parametresini sizin yerinize ekler.src/components/LocalizedLink.tsxKodu kopyalaKodu panoya kopyala
src/components/Header.tsxKodu kopyalaKodu panoya kopyala
İçeriğinizin Dilini Değiştirin
İsteğe bağlıDil değiştiriciyi bir
<select>yerine bağlantılar (linkler) olarak işleyin. Bağlantılar taranabilir olduğundan arama motorları her dil sürümünü bulabilir ve JavaScript olmadan da çalışırlar.to="."geçerli sayfayı korur ve yalnızca dil parametresini değiştirir. Çerez, 16. adımdaki yönlendirme ara yazılımı için yapılan açık tercihi hatırlar.src/components/LocaleSwitcher.tsxKodu kopyalaKodu panoya kopyala
Meta Verilerinizi Uluslararasılaştırın
İsteğe bağlıi18n yapısının en büyük fayda sağladığı yer burasıdır: her dil sürümü bağımsız olarak sıralama kazanabilir. Her sayfa şunları sağlamalıdır:
- çevrilmiş bir
<title>vedescription; - kendisine işaret eden standart (canonical) bir URL (varsayılan dile değil);
- dil başına bir
hreflangalternatifi ve eşleşmeyen diller içinx-default; - sosyal önizlemeler tarafından kullanılan Open Graph
og:locale,og:locale:alternateveog:urletiketleri; - arama motorlarının ve yapay zeka asistanlarının sayfanın dilini belirlemesine yardımcı olan
inLanguageiçeren JSON-LD.
Tek bir yardımcı fonksiyon tüm bunları oluşturur, böylece sayfa kodları kısa kalır:
src/i18n/seo.tsKodu kopyalaKodu panoya kopyala
Bunu 9. adımda gösterildiği gibi her sayfanın
head()fonksiyonunda kullanın. Ana sayfa içinpath: "/"değerini iletin.- çevrilmiş bir
Site Haritanızı Uluslararasılaştırın
İsteğe bağlıÇok dilli bir site haritası her dilin her URL'sini listeler ve her girdi
xhtml:linkile tüm alternatiflerini bildirir. Google bu ek açıklamaları tıpkı sayfadakihreflangetiketleri gibi kullanır; bu da bir sayfa nadiren tarandığında bunları güvenilir bir yedek haline getirir.TanStack Start sunucu rotaları bunu bir dosya rotasından sunmanıza olanak tanır:
src/routes/sitemap[.]xml.tsKodu kopyalaKodu panoya kopyala
robots.txt Dosyanızı Uluslararasılaştırın
İsteğe bağlıGizli (özel) rotalar her dilde mevcuttur, bu nedenle
Disallowkuralları her öneki kapsamalıdır. Başlangıç şablonu oluşturduysapublic/robots.txtdosyasını kaldırın ve ardından bunu bir rotadan sunun:src/routes/robots[.]txt.tsKodu kopyalaKodu panoya kopyala
İlk Kez Gelen Ziyaretçileri Kendi Dillerine Yönlendirin
İsteğe bağlıBir istek ara yazılımı,
/adresine gelen bir ziyaretçiyi önce dil çerezine, ardındanAccept-Languagebaşlığına bakarak tercih ettiği dile yönlendirir. Yalnızca/yönlendirilir: derin bağlantılara (deep links) asla dokunulmaz, böylece paylaşılan URL'ler ve tarayıcı botları her zaman istedikleri sayfaya ulaşır.src/i18n/negotiateLocale.tsKodu kopyalaKodu panoya kopyala
src/start.tsKodu kopyalaKodu panoya kopyala
Dil değiştiricide açıkça İngilizceyi seçen bir ziyaretçinin çerezine
locale=enyazılır, bu yüzden tekrar yönlendirilmez. Tamamen statik bir dağıtımda (18. adım),/bir dosya olarak sunulur ve bu ara yazılım çalışmaz; bu tamamen normaldir: sayfa erişilebilir kalır ve dil değiştirici gerisini halleder.use-intl API'sini Koruyun, Intlayer ile Çalışma Zamanını Küçültün
İsteğe bağlıKıyaslama testi, use-intl kurulumunun en ağır kısmının çalışma zamanının kendisi olduğunu göstermektedir (~76 KB gzip).
@intlayer/use-intluyumluluk adaptörü aynı API'yi (useTranslations,useFormatter,IntlProvider,createTranslator, ICU çoğulları,t.rich) sunar, ancak bunu derlenmiş Intlayer sözlüklerinden sağlar: bileşenlerinizde hiçbir değişiklik yapmadan ~75.9 KB yerine ~6.7 KB, %0 dil sızıntısı ve %0 sayfa sızıntısı elde edersiniz.bashKodu kopyalaKodu panoya kopyala
Vite eklentisi
use-intlpaketini adaptöre yönlendirir (alias), böylece mevcut import ifadeleri çalışmaya devam eder:vite.config.tsKodu kopyalaKodu panoya kopyala
JSON senkronizasyon eklentisi sayesinde JSON dosyalarınız doğruluk kaynağı olarak kalır:
intlayer.config.tsKodu kopyalaKodu panoya kopyala
Adaptör ayrıca sorunsuz bir geçiş yolu sunar: çalışır hale geldikten sonra bileşenleri tek tek yerel
useIntlayerAPI'sine taşıyabilirsiniz. Intlayer TanStack Start rehberine göz atın.Her Dili Önceden İşleyin (Pre-render)
İsteğe bağlıStatik HTML, sunabileceğiniz en hızlı ve dizine eklenmesi en kolay sayfadır. TanStack Start'ın derleme zamanında tüm dil sürümlerini, ayrıca site haritası ve robots dosyalarını önceden işlemesi için yerelleştirilmiş tüm yolları listeleyin:
vite.config.tsKodu kopyalaKodu panoya kopyala
Dil değiştirici gerçek bağlantılar oluşturduğu için
crawlLinks: truelistelemeyi unuttuğunuz sayfaları da otomatik olarak keşfeder.Yerelleştirilmiş 404 Sayfalarını Yönetin
İsteğe bağlı- adımdaki düzen, bilinmeyen dil önekleri için zaten
notFound()fırlatır. Bir dil içindeki bilinmeyen yolların da yerelleştirilmiş 404 sayfasını işlemesi için her şeyi yakalayan (catch-all) bir rota ekleyin ve bununoindexolarak işaretleyin: React 19<meta>etiketini otomatik olarak<head>içine taşır.
src/components/NotFound.tsxKodu kopyalaKodu panoya kopyala
src/routes/{-$locale}/$.tsxKodu kopyalaKodu panoya kopyala
- adımdaki düzen, bilinmeyen dil önekleri için zaten
Sunucu Fonksiyonlarında Dile Erişin
İsteğe bağlıSunucu fonksiyonları rota parametrelerini almaz. Yerelleştirilmiş bir e-posta göndermek veya bir dil tercihini kaydetmek için dil çerezini okuyun ve gerekirse
Accept-Languagebaşlığına geri dönün:src/server/getServerLocale.tsKodu kopyalaKodu panoya kopyala
Sunucu fonksiyonu içinde çeviri yapmak için bunu
use-intlkütüphanesindenloadMessagesvecreateTranslatorile birleştirin.Intlayer Kullanarak Çevirilerinizi Otomatikleştirin
İsteğe bağlıuse-intl çevirileri işler, ancak bunları oluşturmanıza yardımcı olmaz. Intlayer ücretsizdir ve açık kaynaklıdır; use-intl kullanmaya devam etseniz bile bu boşluğu doldurur:
- CI veya birim testlerinde eksik çevirileri test edin. Çevirilerinizi test etme sayfasına bakın.
- Kendi API anahtarınız ve sağlayıcınızla yapay zeka ile çevirin:
npx intlayer filleksik anahtarları uygulamanızın bağlamıyla çevirir. Otomatik tamamlama (auto fill) ve CLI sayfalarına bakın. - JSON senkronizasyon eklentisi ile JSON dosyalarınızı doğruluk kaynağı olarak koruyun.
- Geliştirici olmayanların çevirileri güncelleyebilmesi için görsel editör ve CMS ile içeriği görsel olarak düzenleyin.
- MCP sunucusu ve ajan yetenekleri (skills) ile yapay zeka ajanınıza bağlam sağlayın.
- Scan komutu ile dağıtılmış sitenizi eksik
hreflang, yanlış canonical ve dil sızıntılarına karşı tarayın.
Tüm özellikleri keşfetmek için neden Intlayer sayfasına bakın.
Sıkça Sorulan Sorular
Next.js dışında next-intl API'sini kullanmak istiyorsanız evet. Size ICU mesajları, biçimlendiriciler ve iyi bir TypeScript desteği sunar; ayrıca setRequestLocale gibi Next.js'e özgü kısıtlamalardan kaçınmanızı sağlar. Dezavantajı ise ağırlığıdır: kıyaslama testi çalışma zamanı için ~76 KB gzip ölçmektedir ve basit bir kurulum tüm dilleri ve sayfaları tarayıcıya gönderir. Sızıntıları önlemek için bu rehberde olduğu gibi ad alanlarını rota ve dil bazında yükleyin.
use-intl, next-intl paketinin çekirdeğidir. next-intl bunun üzerine Next.js entegrasyonlarını ekler: ara yazılım, navigasyon yardımcıları, Sunucu Bileşenleri için getTranslations ve istek yapılandırması. TanStack Start üzerinde doğrudan use-intl kullanırsınız ve yönlendirmeyi yukarıda gösterildiği gibi TanStack Router ile uygularsınız.
URL içinde bir önek kullanın. Böylece her dil sürümü arama motorlarının dizine ekleyebileceği ve kullanıcıların paylaşabileceği kendi URL'sine sahip olur. Bir çerez ise 16. adımdaki yönlendirme ara yazılımının yaptığı gibi açıkça yapılan bir tercihi hatırlamak için faydalıdır.
Sunucu ve tarayıcı tarihleri farklı saat dilimlerinde biçimlendirir. Her iki tarafın da aynı metni üretmesi için IntlProvider bileşenine açık bir timeZone (veya çerezde saklanan ziyaretçi saat dilimini) iletin.
İlk olarak, mesajları ad alanına göre bölün ve import.meta.glob ile rota ve dil bazında yükleyin; bu, dil ve sayfa sızıntılarını ortadan kaldırır. Ardından, çalışma zamanı boyutu önemliyse @intlayer/use-intl adaptörüne geçin: aynı API, kıyaslama testinde ~75.9 KB yerine ~6.7 KB.
Rota yükleyicisinin döndürdüğü mesajlarla rota head() fonksiyonu içinde createTranslator çağırın, ardından title, description, canonical ve hreflang bağlantılarını döndürün. 13. adım yeniden kullanılabilir bir yardımcı fonksiyon sunmaktadır.
Yorumlar
Henüz yorum yok. Düşüncelerinizi paylaşan ilk kişi olun.
