Next.js uygulamanıza çok dilli destek ekleyin.
Yerel dosyalarınızı, Markdown içeriğinizi ve HTML sayfalarınızı tek bir API çağrısıyla çevirin. App Router, next-intl ve herhangi bir i18n yönlendirme kurulumu ile çalışır.
Next.js size yönlendirme sağlar. Çeviri sağlamaz.
Next.js App Router, yerel tabanlı yönlendirme için mükemmel yerleşik destek sunar. next-intl gibi kütüphaneler çeviri dosyalarını yönetmeyi ve yerel değiştirmeyi kolaylaştırır. Ancak çözemedikleri şey çevirinin kendisidir — her dilde çevrilmiş içeriği üretmek gerekir ve bu genellikle sizsinizdir. Çoğu ekip için iş akışı, İngilizce JSON'u DeepL'e kopyalamak, bozulan biçimlendirmeyi düzeltmek, sonucu geri yapıştırmak ve her dil için tekrarlamaktır. Bu yavaş, hata yapmaya açık ve ölçeklenemez.
En yaygın iş akışı, tüm kullanıcı arayüzü dizelerini kaynak kodda İngilizce yazmak, ardından her hedef dil için messages.json dosyasını çevirmektir. Teoride bu basittir. Pratikte, 10+ yerel dosyayı kaynak değişikliklerle senkron tutmak sürekli bir sorun haline gelir. İngilizce metin her değiştiğinde, her yerel dosyanın güncellenmesi gerekir. Standart çeviri API'leri kullanıldığında, anahtar isimleri bozulur, değişken yer tutucular çevrilir ve JSON yapısı yereller arasında kayar — bu da izlenmesi zor ince çalışma zamanı hatalarına yol açar.
PolyLingo mevcut Next.js i18n kurulumunuza uyum sağlar.
next-intl veya başka bir i18n kütüphanesi kullanıyorsanız, mesajlarınız zaten JSON formatındadır. PolyLingo bu JSON'u alır, çeviri modelinden geçirir ve her hedef dil için anahtarlar korunmuş, iç içe yapılar bozulmamış ve metin değerleri doğru çevrilmiş şekilde çevirilmiş kopyalarını döner. Bunu bir derleme betiğinden, webhook'tan veya PolyLingo arayüzünden çağırabilirsiniz. Sonuç doğrudan mesajlar dizininize düşer.
İş akışı: İngilizce messages.json dosyanızı yazın. Kaynak dosyanız ve tüm hedef dil kodları ile PolyLingo API'sini çağıran tek bir betik çalıştırın. Her dil için aynı yapıya sahip bir çevirilmiş JSON dosyası alın. Her birini messages/ dizininize yazın. Commit yapın. İşlem tamam.
CMS'de (Sanity, Contentful) Markdown içeriği olan içerik ağırlıklı siteler için aynı yaklaşım içerik için de geçerlidir: Markdown veya HTML olarak dışa aktarın, çevirin, CMS API'si aracılığıyla geri yazın. Tüm işlem bir derleme adımı veya webhook tetikleyicisi olarak çalıştırılabilir.
// This repository: frontend/scripts/translate-messages.mjs
// Chunks large namespaces (e.g. home) so the model stays within output limits.
//
// export POLYLINGO_API_KEY=pl_xxx
// npm run i18n:polylingo
//
// Writes messages/es.json, fr.json, … from messages/en.json via POST /v1/translate
// with format: "json". See MARKETING_I18N.md for options and CI notes.
//
// Minimal one-shot pattern (fine for small message files):
//
// const source = readFileSync('./messages/en.json', 'utf8')
// const { translations } = await fetch(apiUrl + '/translate', {
// method: 'POST',
// headers: { Authorization: `Bearer ${apiKey}`, 'Content-Type': 'application/json' },
// body: JSON.stringify({
// content: source, format: 'json', source: 'en',
// targets: ['es', 'fr', 'de'], model: 'standard',
// }),
// }).then((r) => r.json())
//
// for (const [lang, raw] of Object.entries(translations)) {
// const obj = typeof raw === 'string' ? JSON.parse(raw) : raw
// writeFileSync(`./messages/${lang}.json`, JSON.stringify(obj, null, 2))
// }// i18n.ts (next-intl v4)
import { getRequestConfig } from 'next-intl/server'
export const locales = [
'en', 'ar', 'bn', 'cs', 'da', 'de', 'el', 'es', 'fa', 'fi',
'fr', 'he', 'hi', 'id', 'it', 'ja', 'ko', 'ms', 'nl', 'no',
'pl', 'pt', 'ru', 'sv', 'sw', 'th', 'tr', 'uk', 'vi', 'zh',
] as const
export type Locale = (typeof locales)[number]
export default getRequestConfig(async ({ requestLocale }) => {
const locale = await requestLocale
return {
locale,
messages: (await import(`./messages/${locale}.json`)).default,
}
})// package.json
{
"scripts": {
"dev": "next dev",
"build": "next build",
"i18n:polylingo": "node scripts/translate-messages.mjs",
"translate:build": "npm run i18n:polylingo && next build"
}
}Neden PolyLingo Next.js i18n iş akışına uyum sağlar
- ✓messages/*.json dosyalarını doğrudan çevirin — anahtarlar her zaman korunur
- ✓Blog yazıları ve doküman sayfaları için Markdown içeriğini çevirin
- ✓next-intl, next-i18next ve özel kurulumlarla çalışır
- ✓REST API, derleme betikleri ve CMS webhook'ları ile entegre olur
- ✓Tüm 36 dili tek bir istekte çevirir
- ✓Ücretsiz katman — ayda 100.000 token
- ✓Bu depo kendi iş akışını kullanır: npm run i18n:polylingo, messages/en.json'dan pazarlama yerellerini yeniden oluşturur (MARKETING_I18N.md'ye bakınız).
- ✓App Router ve Pages Router ile çalışır
- ✓Çıktı dosyaları commit için hazır — yeniden biçimlendirme gerekmez
Next.js uygulamanızda çok dilli desteği kurun
İngilizce mesaj dosyanızla next-intl'i kurun
next-intl'i yükleyin ve i18n.ts ile middleware'inizi yapılandırın. Tüm kullanıcı arayüzü dizelerini messages/en.json içinde yazın. Dosyayı uygulamanızın ihtiyacına göre düz veya iç içe yapıda tutabilirsiniz. Bu sizin tek gerçek kaynağınız olur.
Çeviri betiğini çalıştırın
PolyLingo JSON API'sini küçük bir Node betiğinden kullanın (yukarıdaki koda bakınız). Bu monorepoda, POLYLINGO_API_KEY ayarlı olarak frontend/ dizininde npm run i18n:polylingo komutunu çalıştırın — büyük ad alanlarını güvenilirlik için parçalara böler. Tam bir pazarlama paketi için tipik çalışma süresi bir dakikanın çok altındadır.
Yerel dosyaları commit edin ve dağıtın
Oluşturulan yerel dosyalar, kaynak dosyanızla aynı yapıya sahip geçerli JSON'dur. Bunları repoya commit edin. Her içerik değişikliğinde yerellerin senkron kalması için çeviri betiğini CI hattınıza ekleyin.
Next.js çok dilli kullanım senaryoları
SaaS uygulamaları ve panolar
Tüm kullanıcı arayüzü dize kütüphanenizi tek betik çalıştırmada çevirin. JSON yapısı tam korunduğu için next-intl'in tüm biçimlendirme özelliklerini destekler — tarih, sayı, çoğul.
İçerik siteleri ve bloglar
Sanity veya Contentful kullanan içerik ağırlıklı Next.js siteleri için PolyLingo, sayfa içeriği ve kullanıcı arayüzü dizelerini aynı API ve biçim koruma garantileriyle çevirir.
Bölgesel varyantlı e-ticaret
Ürün isimleri, açıklamalar, kategori sayfaları ve ödeme kullanıcı arayüzünü çevirin. Marka sesi önemli olan pazarlama metinleri için Gelişmiş modeli, işlevsel kullanıcı arayüzü dizeleri için Standart modeli kullanın.
Sıkça sorulan sorular
Bu Next.js App Router ile çalışıyor mu?
Evet. PolyLingo entegrasyonu sadece JSON dosyalarını okuyan ve yazan bir betiktir — Next.js dahili bağımlılığı yoktur. App Router, Pages Router veya herhangi bir framework ile çalışır. Gösterilen next-intl yapılandırma örneği, Next.js 13, 14 ve 15 ile uyumlu v4 API'sini requestLocale ile kullanır.
messages.json dosyam sık sık değişirse ne olur?
Önerilen yöntem, çeviri betiğini CI/CD hattınıza eklemek ve messages/en.json değişikliklerinde tetiklemektir. Bu, tüm yerel dosyaların otomatik olarak senkron kalmasını sağlar. Sık metin değişikliği olan ekipler için yerel sürüklenmeyi tamamen önler.
PolyLingo next-i18next ile next-intl kadar iyi çalışıyor mu?
Evet. next-i18next aynı yerel JSON yapısını kullanır. Çeviri betiği aynı şekilde çalışır — public/locales/en/ dizininizi gösterin ve çıktıları diğer yerel dizinlere yazın. JSON format uyumluluğu aynıdır.
messages dosyasında olmayan dinamik içerik ne olacak?
Dinamik içerik — blog yazıları, ürün açıklamaları, kullanıcı tarafından oluşturulan içerik — CMS'nizde veya Next.js'e ulaşmadan önce içeriği işleyen bir derleme betiği aracılığıyla veri katmanında çevrilmelidir. PolyLingo bu amaçla Markdown, HTML ve düz metni eşit derecede iyi işler.
Sadece son çalıştırmadan sonra değişen dizeleri çevirebilir miyim?
Artımlı çeviri (sadece değişen anahtarları çevirmek) yol haritasında. Şu anda betik tüm dosyayı yeniden çevirir. Çoğu mesaj dosyası (20KB altı) için bu her commit'te çalıştırmak için yeterince hızlıdır. Çok büyük dosyalar için ad alanına göre bölmek önerilir.
Çeviriler üretime gitmeden önce gözden geçirilebilir mi?
Önerilen yöntem, çevrilmiş yerel dosyaları inceleme için ayrı bir dal veya PR'a commit etmek ve ana dala birleştirmeden önce gözden geçirmektir. Bu, çeviri kalitesinde insan incelemesi gereken ekipler için standart uygulamadır. PolyLingo iyi bir ilk geçiş üretir — çoğu kullanıcı arayüzü dizesi için Standart model çıktısı düzenleme gerektirmez.
İlgili rehberler
JSON yerel dosyalarını çevirin
PolyLingo'nun JSON yapısı, iç içe nesneler ve değişken yer tutucuları nasıl ele aldığı.
Headless CMS için çok dilli destek
Kullanıcı arayüzü dizesi çevirisi ile birlikte CMS seviyesinde içerik çevirisi.
Biçimlendirmeyi bozmadan Markdown çevirisi
Markdown blog yazıları veya MDX sayfaları olan Next.js siteleri için.
İlk yerel dosyanızı 5 dakika içinde çevirtin.
Ücretsiz API anahtarı. Kredi kartı gerekmez. Mesajlar JSON'unuzu yapıştırın ve çıktıyı hemen görün.
API anahtarınızı alınÇeviri betiği kurulumu 5 dakika sürer. Ücretsiz katman — kredi kartı gerekmez.