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ümv7.0.001.11.2025
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
2025'te next-intl kullanarak Next.js uygulamanızı nasıl uluslararasılaştırırsınız
İçindekiler
next-intl nedir?
next-intl, özellikle Next.js App Router için tasarlanmış popüler bir uluslararasılaştırma (i18n) kütüphanesidir. Mükemmel TypeScript desteği ve yerleşik optimizasyonlarla çok dilli Next.js uygulamaları oluşturmanın sorunsuz bir yolunu sağlar.
Tercih ederseniz, ayrıca next-i18next rehberine veya doğrudan Intlayer kullanmaya da başvurabilirsiniz.
Karşılaştırmayı next-i18next vs next-intl vs Intlayer sayfasında görebilirsiniz.
Takip etmeniz gereken uygulamalar
Uygulamaya başlamadan önce, takip etmeniz gereken bazı uygulamalar şunlardır:
- HTML
langvedirözniteliklerini ayarlayın
Düzeninizde,dirdeğerinigetLocaleDirection(locale)kullanarak hesaplayın ve uygun erişilebilirlik ve SEO için<html lang={locale} dir={dir}>olarak ayarlayın. - Mesajları namespace'e göre ayırın
JSON dosyalarını locale ve namespace (örneğin,common.json,about.json) bazında organize edin, böylece sadece ihtiyacınız olanları yükleyebilirsiniz. - İstemci yükünü minimize edin
Sayfalarda,NextIntlClientProvider'a sadece gerekli namespace'leri gönderin (örneğin,pick(messages, ['common', 'about'])). - Statik sayfaları tercih edin
Daha iyi performans ve SEO için mümkün olduğunca statik sayfalar kullanın. - Sunucu bileşenlerinde I18n
Sunucu bileşenleri, sayfalar veyaclientolarak işaretlenmemiş tüm bileşenler statiktir ve build zamanında önceden render edilebilir. Bu nedenle, çeviri fonksiyonlarını onlara props olarak geçmemiz gerekecek. - TypeScript tiplerini ayarlayın
Uygulamanız genelinde tip güvenliğini sağlamak için locale'leriniz için TypeScript tiplerini yapılandırın. - Yönlendirme için proxy kullanımı
Locale tespiti ve yönlendirmeyi yönetmek için bir proxy kullanın ve kullanıcıyı uygun locale önekli URL'ye yönlendirin. - Metadata, sitemap, robots.txt'nin uluslararasılaştırılması
Next.js tarafından sağlanangenerateMetadatafonksiyonunu kullanarak metadata, sitemap ve robots.txt dosyalarınızı uluslararasılaştırın; böylece tüm locale'lerde arama motorları tarafından daha iyi keşfedilmesini sağlayın. - Linkleri yerelleştirin
Link bileşenini kullanarak bağlantıları yerelleştirin ve kullanıcıyı uygun locale önekiyle başlayan URL'ye yönlendirin. Sayfalarınızın tüm locale'lerde keşfedilmesini sağlamak önemlidir.
- Testleri ve çevirileri otomatikleştirin
Testlerin ve çevirilerin otomatikleştirilmesi, çok dilli uygulamanızı sürdürürken zaman kaybetmenizi önler.
Uluslararasılaştırma ve SEO hakkında bilmeniz gereken her şeyi listeleyen dokümanımıza bakın: next-intl ile Uluslararasılaştırma (i18n).
Next.js Uygulamasında next-intl Kurulumuna Adım Adım Rehber
GitHub'da Uygulama Şablonuna bakın.
Oluşturacağımız proje yapısı şöyle:
Kodu panoya kopyala
Bağımlılıkları Yükleyin
Gerekli paketleri npm kullanarak yükleyin:
bashKodu kopyalaKodu panoya kopyala
- next-intl: Çevirileri yönetmek için hooklar, sunucu fonksiyonları ve istemci sağlayıcıları sunan Next.js App Router için temel uluslararasılaştırma kütüphanesi.
Projenizi Yapılandırın
Desteklenen yerel ayarları tanımlayan ve next-intl'in istek yapılandırmasını ayarlayan bir yapılandırma dosyası oluşturun. Bu dosya, i18n kurulumunuz için tek gerçek kaynak olarak hizmet eder ve uygulamanız genelinde tür güvenliğini sağlar.
Yerel ayar yapılandırmanızı merkezi hale getirmek, tutarsızlıkları önler ve gelecekte yerel ayar eklemeyi veya kaldırmayı kolaylaştırır.
getRequestConfigfonksiyonu her istekte çalışır ve her sayfa için yalnızca gereken çevirileri yükler, bu da kod bölme (code-splitting) yapılmasını sağlar ve paket boyutunu azaltır.src/i18n.tsKodu kopyalaKodu panoya kopyala
Dinamik Yerel Rotaları Tanımlayın
Yerel ayarlar için dinamik yönlendirmeyi, uygulama klasörünüzde bir
[locale]dizini oluşturarak ayarlayın. Bu, Next.js'in her yerel ayarın bir URL segmenti haline geldiği yerel ayar tabanlı yönlendirmeyi (örneğin,/en/about,/fr/about) yönetmesini sağlar.Dinamik rotaların kullanılması, Next.js'in tüm yerel ayarlar için derleme zamanında statik sayfalar oluşturmasını sağlar, bu da performansı ve SEO'yu iyileştirir. Layout bileşeni, HTML
langvedirözniteliklerini yerel ayara göre ayarlar; bu, erişilebilirlik ve arama motorlarının anlayışı için kritik öneme sahiptir.src/app/[locale]/layout.tsxKodu kopyalaKodu panoya kopyala
src/app/[locale]/about/page.tsxKodu kopyalaKodu panoya kopyala
Çeviri Dosyalarınızı Oluşturun
Her locale ve namespace için JSON dosyaları oluşturun. Bu yapı, çevirileri mantıklı bir şekilde organize etmenizi ve her sayfa için yalnızca ihtiyacınız olanları yüklemenizi sağlar.
Çevirileri namespace bazında organize etmek (örneğin,
common.json,about.json) kod bölme (code splitting) yapmanızı sağlar ve paket boyutunu küçültür. Her sayfa için yalnızca gereken çevirileri yüklersiniz, bu da performansı artırır.locales/en/common.jsonKodu kopyalaKodu panoya kopyala
locales/fr/common.jsonKodu kopyalaKodu panoya kopyala
locales/en/about.jsonKodu kopyalaKodu panoya kopyala
locales/fr/about.jsonKodu kopyalaKodu panoya kopyala
Çevirileri Sayfalarınızda Kullanın
Sunucuda çevirileri yükleyen ve bunları hem sunucu hem de istemci bileşenlerine aktaran bir sayfa bileşeni oluşturun. Bu, çevirilerin render edilmeden önce yüklenmesini sağlar ve içerik yanıp sönmesini önler.
Sunucu tarafında çevirilerin yüklenmesi SEO'yu iyileştirir ve FOUC (Çevrilmemiş İçeriğin Yanıp Sönmesi) sorununu engeller.
pickkullanarak yalnızca gerekli namespace'leri istemci sağlayıcısına göndererek, tarayıcıya gönderilen JavaScript paketini minimize ederiz.src/app/[locale]/about/page.tsxKodu kopyalaKodu panoya kopyala
İstemci Bileşenlerinde Çevirileri Kullanma
İstemci bileşenleri, çevirilere ve biçimlendirme işlevlerine erişmek için
useTranslationsveuseFormatterhook'larını kullanabilir. Bu hook'larNextIntlClientProviderbağlamından (context) okuma yapar.İstemci bileşenlerin çevirilere erişmek için React hook'larına ihtiyacı vardır.
useTranslationsveuseFormatterhook'ları next-intl ile sorunsuz bir şekilde entegre olur ve dil değiştiğinde reaktif güncellemeler sağlar.Sayfanın istemci mesajlarına gerekli isim alanlarını eklemeyi unutmayın (yalnızca istemci bileşenlerinizin gerçekten ihtiyaç duyduğu isim alanlarını dahil edin).
src/components/ClientComponent.tsxKodu kopyalaKodu panoya kopyala
Sunucu Bileşenlerinde Çevirileri Kullanma
Sunucu bileşenleri React hook'larını kullanamaz, bu yüzden çeviriler ve biçimlendiriciler üst bileşenlerinden props olarak alınır. Bu yaklaşım sunucu bileşenlerini senkron tutar ve onların istemci bileşenlerinin içinde iç içe yerleştirilmesine izin verir.
İstemci sınırları altında iç içe olabilecek sunucu bileşenlerinin senkron olması gerekir. Çevrilmiş dizeleri ve biçimlendirilmiş değerleri props olarak geçirerek, asenkron işlemlerden kaçınır ve doğru render edilmesini sağlarız. Çevirileri ve biçimlendirmeyi üst sayfa bileşeninde önceden hesaplayın.
src/components/ServerComponent.tsxKodu kopyalaKodu panoya kopyala
Sayfa/düzeninizde, çevirileri ve biçimlendirmeyi önceden hesaplamak için
next-intl/server'dangetTranslationsvegetFormatterkullanın, ardından bunları props olarak sunucu bileşenlerine iletin.İçeriğinizin dilini değiştirin
İsteğe bağlınext-intl ile içeriğinizin dilini değiştirmek için, aynı yol adına işaret eden ve yerel ayarı değiştiren yerel-dil farkında bağlantılar render edin. Sağlayıcı URL'leri otomatik olarak yeniden yazar, bu yüzden sadece mevcut rotayı hedeflemeniz yeterlidir.
src/components/LocaleSwitcher.tsxKodu kopyalaKodu panoya kopyala
Yerelleştirilmiş Link bileşenini kullanma
İsteğe bağlınext-intl, aktif locale otomatik olarak uygulayan yerelleştirilmiş bir link bileşeni içerennext-intl/navigationalt paketini sağlar. Bunu sizin için@/i18ndosyasında çıkardık, böylece şu şekilde kullanabilirsiniz:src/components/MyComponent.tsxKodu kopyalaKodu panoya kopyala
Server Actions içinde aktif locale erişimi
İsteğe bağlıServer Actions,
next-intl/serverkullanarak mevcut locale'i okuyabilir. Bu, yerelleştirilmiş e-postalar göndermek veya gönderilen verilerle birlikte dil tercihlerini saklamak için faydalıdır.src/app/actions/get-current-locale.tsKodu kopyalaKodu panoya kopyala
getLocale,next-intlproxy tarafından ayarlanan locale'i okur, bu yüzden sunucudaki her yerde çalışır: Route Handlers, Server Actions ve edge fonksiyonları.Meta Verilerinizi Uluslararasılaştırın
İsteğe bağlıİçeriği çevirmek önemlidir, ancak uluslararasılaştırmanın asıl amacı web sitenizi dünyaya daha görünür kılmaktır. I18n, uygun SEO ile web sitenizin görünürlüğünü artırmak için inanılmaz bir kaldıraçtır.
Doğru şekilde uluslararasılaştırılmış meta veriler, arama motorlarının sayfalarınızda hangi dillerin mevcut olduğunu anlamasına yardımcı olur. Bu, hreflang meta etiketlerinin ayarlanmasını, başlıkların ve açıklamaların çevrilmesini ve her yerel için kanonik URL'lerin doğru şekilde ayarlandığından emin olmayı içerir.
src/app/[locale]/about/layout.tsxKodu kopyalaKodu panoya kopyala
Site Haritanızı Uluslararasılaştırın
İsteğe bağlıSayfalarınızın tüm yerel sürümlerini içeren bir sitemap oluşturun. Bu, arama motorlarının içeriğinizin tüm dil sürümlerini keşfetmesine ve dizine eklemesine yardımcı olur.
Doğru şekilde uluslararasılaştırılmış bir sitemap, arama motorlarının sayfalarınızın tüm dil sürümlerini bulmasını ve dizine eklemesini sağlar. Bu, uluslararası arama sonuçlarındaki görünürlüğü artırır.
src/app/sitemap.tsKodu kopyalaKodu panoya kopyala
robots.txt Dosyanızı Uluslararasılaştırın
İsteğe bağlıKorunan rotalarınızın tüm yerel sürümlerini düzgün şekilde yöneten bir robots.txt dosyası oluşturun. Bu, arama motorlarının yönetici veya kontrol paneli sayfalarını hiçbir dilde dizine eklememesini sağlar.
Tüm yereller için robots.txt dosyasını doğru yapılandırmak, rotalarınız her yerel için farklı olduğunda arama motorlarının hassas sayfaları dizine eklemesini engeller.
src/app/robots.tsKodu kopyalaKodu panoya kopyala
Yerel Yönlendirme için Proxy Kurulumu
İsteğe bağlıKullanıcının tercih ettiği yereli otomatik olarak algılayan ve onları uygun yerel ön ekli URL'ye yönlendiren bir proxy oluşturun. next-intl, bunu otomatik olarak halleden kullanışlı bir proxy fonksiyonu sağlar.
Proxy, kullanıcıların sitenizi ziyaret ettiklerinde tercih ettikleri dile otomatik olarak yönlendirilmesini sağlar. Ayrıca, kullanıcının tercihlerini gelecekteki ziyaretler için kaydeder ve böylece kullanıcı deneyimini iyileştirir.
src/proxy.tsKodu kopyalaKodu panoya kopyala
Locale için TypeScript Tiplerini Ayarlama
İsteğe bağlıTypeScript kurulumu, anahtarlarınız için otomatik tamamlama ve tip güvenliği elde etmenize yardımcı olur.
Bunun için, proje kök dizininizde bir global.ts dosyası oluşturabilir ve aşağıdaki kodu ekleyebilirsiniz:
global.tsKodu kopyalaKodu panoya kopyala
Bu kod, Module Augmentation kullanarak locales ve messages öğelerini next-intl AppConfig türüne ekleyecektir.
Çevirilerinizi Intlayer ile Otomatikleştirin
İsteğe bağlıIntlayer, uygulamanızdaki yerelleştirme sürecine yardımcı olmak için tasarlanmış ücretsiz ve açık kaynaklı bir kütüphanedir. next-intl çeviri yükleme ve yönetimini üstlenirken, Intlayer çeviri iş akışını otomatikleştirmenize yardımcı olur.
Çevirileri manuel olarak yönetmek zaman alıcı ve hata yapmaya açık olabilir. Intlayer, çeviri testini, oluşturulmasını ve yönetimini otomatikleştirerek zaman kazandırır ve uygulamanız genelinde tutarlılığı sağlar.
Intlayer size şunları sağlar:
İçeriğinizi kod tabanınızda istediğiniz yerde tanımlayın Intlayer,
.content.{ts|js|json}dosyalarını kullanarak içeriğinizi kod tabanınızda istediğiniz yerde tanımlamanıza olanak tanır. Bu, içeriğinizin daha iyi organize edilmesini sağlayarak kod tabanınızın okunabilirliğini ve sürdürülebilirliğini artırır.Eksik çevirileri test edin Intlayer, CI/CD pipeline'ınıza veya birim testlerinize entegre edilebilen test fonksiyonları sağlar. Çevirilerinizi test etmek hakkında daha fazla bilgi edinin: testing your translations.
Çevirilerinizi otomatikleştirin
Intlayer, çevirilerinizi otomatikleştirmek için bir CLI ve bir VSCode uzantısı sağlar. Bu, CI/CD pipeline'ınıza entegre edilebilir. Çevirilerinizi otomatikleştirmek hakkında daha fazla bilgi edinin: automating your translations.
Kendi API anahtarınızı ve tercih ettiğiniz AI sağlayıcısını kullanabilirsiniz. Ayrıca bağlama duyarlı çeviriler sağlar, bkz. fill content.Harici içeriği bağlayın
Intlayer, içeriğinizi harici bir içerik yönetim sistemi (CMS) ile bağlamanıza olanak tanır. İçeriği optimize edilmiş bir şekilde alıp JSON kaynaklarınıza ekleyebilirsiniz. Harici içeriğin nasıl alınacağı hakkında daha fazla bilgi için fetching external content sayfasını inceleyin.Görsel editör
Intlayer, içeriğinizi görsel bir editör kullanarak düzenlemenizi sağlayan ücretsiz bir görsel editör sunar. Çevirilerinizi görsel olarak düzenlemek hakkında daha fazla bilgi için visual editing your translations sayfasını ziyaret edin.
Ve daha fazlası. Intlayer tarafından sunulan tüm özellikleri keşfetmek için lütfen Interest of Intlayer documentation dokümantasyonuna bakınız.
Yorumlar
Henüz yorum yok. Düşüncelerinizi paylaşan ilk kişi olun.