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
Intlayer kullanarak Next.js 15 uygulamanızı next-i18next ile çevirin | Uluslararasılaştırma (i18n)
Bu rehber kimler için
- Junior: Tam adımları takip edin ve kod bloklarını kopyalayın. Çalışan çok dilli bir uygulama elde edeceksiniz.
- Orta seviye: Yaygın hatalardan kaçınmak için kontrol listelerini ve en iyi uygulama uyarılarını kullanın.
- Kıdemli: Üst düzey yapı, SEO ve otomasyon bölümlerine göz atın; mantıklı varsayılanlar ve genişletme noktaları bulacaksınız.
Neler inşa edeceksiniz
- Yerelleştirilmiş rotalara sahip App Router projesi (örneğin,
/,/fr/...) - Yerel ayarlar, varsayılan yerel ayar, RTL desteği ile i18n yapılandırması
- Sunucu tarafı i18n başlatması ve bir istemci sağlayıcı
- İhtiyaç duyulduğunda yüklenen isim alanlı çeviriler
hreflang, yerelleştirilmişsitemap,robotsile SEO- Yerel ayar yönlendirmesi için middleware
- Çeviri iş akışlarını otomatikleştirmek için Intlayer entegrasyonu (testler, AI ile doldurma, JSON senkronizasyonu)
Not: next-i18next, i18next üzerine inşa edilmiştir. Bu rehber, App Router'da next-i18next ile uyumlu i18next ilkel fonksiyonlarını kullanırken mimariyi basit ve üretime hazır tutar. Daha geniş bir karşılaştırma için bkz. next-i18next vs next-intl vs Intlayer.
1) Proje yapısı
next-i18next bağımlılıklarını yükleyin:
Başlangıçta net bir yapı ile başlayın. Mesajları locale ve namespace bazında ayrı tutun.
Kontrol listesi (orta/kıdemli):
- Her locale için namespace başına bir JSON dosyası tutun
- Mesajları aşırı merkezi hale getirmeyin; küçük, sayfa/özellik kapsamlı namespace'ler kullanın
- Tüm locale'leri bir kerede import etmekten kaçının; sadece ihtiyacınız olanları yükleyin
2) Bağımlılıkları yükleyin
Eğer next-i18next API'lerini veya konfigürasyon entegrasyonunu kullanmayı planlıyorsanız, ayrıca:
3) Temel i18n konfigürasyonu
Locale'ları, varsayılan locale'ı, RTL dillerini ve lokalize edilmiş yollar/URL'ler için yardımcı fonksiyonları tanımlayın.
Uzman notu: Eğer next-i18next.config.js kullanıyorsanız, sapmayı önlemek için bunu i18n.config.ts ile uyumlu tutun.
4) Sunucu tarafı i18n başlatma
Sadece gerekli locale/namespace JSON dosyasını dinamik olarak içe aktaran bir backend ile sunucuda i18next'i başlatın.
Orta not: Yükü sınırlamak için namespace listesini sayfa başına kısa tutun. Global “catch-all” paketlerden kaçının.
5) React bileşenleri için istemci sağlayıcısı
İstemci bileşenlerini, sunucu yapılandırmasını yansıtan ve yalnızca istenen namespace’leri yükleyen bir sağlayıcı ile sarın.
Junior ipucu: Tüm mesajları istemciye geçirmenize gerek yok. Sadece sayfanın namespace'leri ile başlayın.
6) Yerelleştirilmiş düzen ve rotalar
Dili ve yönü ayarlayın ve statik render'ı desteklemek için her locale için rotaları önceden oluşturun.
7) Sunucu + istemci kullanımı ile örnek sayfa
Çeviriler (her namespace için src/locales/... altında bir JSON dosyası):
İstemci bileşeni (sadece gerekli namespace'i yükler):
Sayfa/provider'ın yalnızca ihtiyacınız olan namespace'leri içerdiğinden emin olun (örneğin,
about). React < 19 kullanıyorsanız,Intl.NumberFormatgibi ağır formatlayıcıları memoize edin.
Bir client sınırı altında gömülü senkron sunucu bileşeni:
8) SEO: Metadata, Hreflang, Sitemap, Robots
İçeriği çevirmek erişimi artırmanın bir yoludur. Çok dilli SEO'yu kapsamlı şekilde yapılandırın.
En iyi uygulamalar:
- Kökte
langvedirayarlarını yapın - Her yerel dil için
alternates.languagesekleyin (+x-default) - Çevrilmiş URL'leri
sitemap.xmliçinde listeleyin vehreflangkullanın - Yerelleştirilmiş özel alanları (örneğin,
/fr/admin)robots.txtiçinde hariç tutun
9) Yerel Yönlendirme için Middleware
Yereli algılar ve eksikse yerelleştirilmiş bir rotaya yönlendirir.
10) Performans ve Geliştirici Deneyimi (DX) en iyi uygulamaları
- html
langvedirayarla:src/app/[locale]/layout.tsxiçinde yapılmıştır. - Mesajları namespace'e göre böl: Paketleri küçük tut (
common.json,about.jsonvb.). - İstemci yükünü minimize et: Sayfalarda, sağlayıcıya sadece gerekli namespace'leri geçir.
- Statik sayfaları tercih et: Her locale için
export const dynamic = 'force-static'vegenerateStaticParamskullan. - Sunucu bileşenlerini senkronize et: Render zamanında asenkron çağrılar yerine önceden hesaplanmış string/formatlamaları geçir.
- Ağır işlemleri memoize et: Özellikle eski React sürümleri için istemci kodunda.
- Önbellek ve başlıklar: Mümkün olduğunda dinamik render yerine statik veya
revalidatetercih et.
11) Test ve CI
tkullanan bileşenler için anahtarların varlığını doğrulayan birim testleri ekle.- Her namespace'in tüm locale'larda aynı anahtarlara sahip olduğunu doğrulayın.
- Eksik anahtarları deploy öncesinde CI sırasında görünür hale getirin.
Intlayer bunun çoğunu otomatikleştirecektir (bir sonraki bölüme bakınız).
12) Intlayer'ı üstüne ekle (otomasyon)
Intlayer, JSON çevirilerinizi senkronize tutmanıza, eksik anahtarları test etmenize ve istenildiğinde AI ile doldurmanıza yardımcı olur.
Intlayer bağımlılıklarını yükleyin:
Paket scriptlerini ekleyin:
Yaygın akışlar:
- Eksik anahtarlar için CI'de
pnpm i18n:testçalıştırarak derlemelerin başarısız olmasını sağlamak - Yeni eklenen anahtarlar için yerel olarak AI çevirileri önermek amacıyla
pnpm i18n:fillçalıştırmak
CLI argümanları sağlayabilirsiniz; bkz. Intlayer CLI dokümanları.
13) Sorun Giderme
- Anahtarlar bulunamadı: Sayfa/sağlayıcının doğru namespace'leri listelediğinden ve JSON dosyasının
src/locales/<locale>/<namespace>.jsonaltında mevcut olduğundan emin olun. - Yanlış dil/İngilizce flaşı:
middleware.tsiçindeki locale tespitini ve sağlayıcılngdeğerini tekrar kontrol edin. - RTL düzen sorunları:
dirdeğerininisRtl(locale)fonksiyonundan türetildiğini ve CSS'inizin[dir="rtl"]kurallarına uyduğunu doğrulayın. - SEO alternatifi eksik:
alternates.languagesiçinde tüm locale'lerin vex-default'un bulunduğundan emin olun. - Paketler çok büyük: Namespace'leri daha da bölün ve istemci tarafında tüm
localesağaçlarını içe aktarmaktan kaçının.
14) Sonraki Adımlar
- Özellikler geliştikçe daha fazla locale ve namespace ekleyin
- Hata sayfalarını, e-postaları ve API tabanlı içerikleri yerelleştirin
- Çeviri güncellemeleri için otomatik PR açacak şekilde Intlayer iş akışlarını genişletin
Başlangıç için bir şablon tercih ederseniz, şu adresi deneyin: https://github.com/aymericzip/intlayer-next-i18next-template.