अपने Next.js ऐप में बहुभाषी जोड़ें।
अपने locale फ़ाइलें, Markdown सामग्री, और HTML पृष्ठों का अनुवाद एक ही API कॉल के माध्यम से करें। App Router, next-intl, और किसी भी i18n रूटिंग सेटअप के साथ काम करता है।
Next.js आपको रूटिंग देता है। यह आपको अनुवाद नहीं देता।
Next.js App Router में locale-आधारित रूटिंग के लिए उत्कृष्ट अंतर्निहित समर्थन है। next-intl जैसी लाइब्रेरी अनुवाद फ़ाइलों और locale स्विचिंग को प्रबंधित करना आसान बनाती हैं। लेकिन वे अनुवाद स्वयं नहीं करते — हर भाषा में अनुवादित सामग्री किसी को बनानी होती है, और वह आमतौर पर आप होते हैं। अधिकांश टीमों के लिए, कार्यप्रवाह होता है अंग्रेज़ी JSON को DeepL में कॉपी करना, टूटे हुए फॉर्मेट को ठीक करना, परिणाम को वापस पेस्ट करना, और हर भाषा के लिए दोहराना। यह धीमा, त्रुटिपूर्ण, और स्केल नहीं होता।
सबसे सामान्य कार्यप्रवाह है कि सभी UI स्ट्रिंग्स अंग्रेज़ी में स्रोत कोड के अंदर लिखी जाती हैं, फिर प्रत्येक लक्ष्य भाषा के लिए messages.json फ़ाइल का अनुवाद किया जाता है। सैद्धांतिक रूप से यह सरल है। व्यावहारिक रूप में, 10+ locale फ़ाइलों को स्रोत परिवर्तनों के साथ सिंक में रखना एक बार-बार की समस्या बन जाती है। जब भी अंग्रेज़ी कॉपी बदलती है, हर locale फ़ाइल को अपडेट करना पड़ता है। मानक अनुवाद API का उपयोग करते समय, कुंजी नाम भ्रष्ट हो जाते हैं, वेरिएबल प्लेसहोल्डर अनुवादित हो जाते हैं, और JSON संरचना locale के बीच विचलित हो जाती है — जिससे सूक्ष्म रनटाइम बग होते हैं जिन्हें ट्रेस करना मुश्किल होता है।
PolyLingo आपके मौजूदा Next.js i18n सेटअप में फिट बैठता है।
यदि आप next-intl या किसी अन्य i18n लाइब्रेरी का उपयोग करते हैं, तो आपके संदेश पहले से ही JSON में हैं। PolyLingo उस JSON को लेता है, अनुवाद मॉडल के माध्यम से भेजता है, और हर लक्ष्य भाषा के लिए अनुवादित प्रतियां लौटाता है — कुंजी अपरिवर्तित, नेस्टिंग बरकरार, और स्ट्रिंग मान सही ढंग से अनुवादित। आप इसे बिल्ड स्क्रिप्ट, वेबहुक, या PolyLingo UI से कॉल कर सकते हैं। परिणाम सीधे आपके messages निर्देशिका में गिरता है।
कार्यप्रवाह: अपनी अंग्रेज़ी messages.json लिखें। एक स्क्रिप्ट चलाएं जो PolyLingo API को आपके स्रोत फ़ाइल और सभी लक्ष्य भाषा कोड के साथ कॉल करता है। प्रत्येक भाषा के लिए एक अनुवादित JSON फ़ाइल प्राप्त करें, समान संरचना के साथ। प्रत्येक को अपने messages/ निर्देशिका में लिखें। कमिट करें। हो गया।
Markdown वाले कंटेंट-भारी साइटों के लिए (Sanity, Contentful), वही तरीका कंटेंट पर लागू होता है: Markdown या HTML के रूप में निर्यात करें, अनुवाद करें, CMS के API के माध्यम से वापस लिखें। पूरी पाइपलाइन बिल्ड स्टेप या वेबहुक ट्रिगर के रूप में चल सकती है।
// 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"
}
}क्यों PolyLingo Next.js i18n कार्यप्रवाह में फिट बैठता है
- ✓messages/*.json फ़ाइलों का सीधे अनुवाद करें — कुंजी हमेशा संरक्षित रहती हैं
- ✓ब्लॉग पोस्ट और डॉक पृष्ठों के लिए Markdown सामग्री का अनुवाद करें
- ✓next-intl, next-i18next, और कस्टम सेटअप के साथ काम करता है
- ✓REST API बिल्ड स्क्रिप्ट और CMS वेबहुक के साथ एकीकृत होता है
- ✓एक ही अनुरोध में सभी 36 भाषाएँ
- ✓फ्री टियर — प्रति माह 50,000 टोकन
- ✓यह रिपॉजिटरी कार्यप्रवाह का उपयोग करती है: npm run i18n:polylingo messages/en.json से मार्केटिंग locale पुनः उत्पन्न करता है (देखें MARKETING_I18N.md)।
- ✓App Router और Pages Router के साथ काम करता है
- ✓आउटपुट फ़ाइलें कमिट के लिए तैयार हैं — पुनः स्वरूपण की आवश्यकता नहीं
अपने Next.js ऐप में बहुभाषी सेट करें
अपने अंग्रेज़ी messages फ़ाइल के साथ next-intl सेट करें
next-intl इंस्टॉल करें और अपने i18n.ts और मिडलवेयर को कॉन्फ़िगर करें। सभी UI स्ट्रिंग्स messages/en.json में लिखें। फ़ाइल को अपनी ऐप की जरूरत के अनुसार संरचित करें — फ्लैट या नेस्टेड। यह आपका एकमात्र सत्य स्रोत बन जाता है।
अनुवाद स्क्रिप्ट चलाएं
PolyLingo JSON API को एक छोटे Node स्क्रिप्ट से उपयोग करें (ऊपर कोड देखें)। इस मोनोरिपॉजिटरी में, frontend/ से npm run i18n:polylingo चलाएं POLYLINGO_API_KEY सेट के साथ — यह विश्वसनीयता के लिए बड़े नेमस्पेस को टुकड़ों में बांटता है। पूर्ण मार्केटिंग बंडल के लिए सामान्य रन एक मिनट से भी कम लेते हैं।
locale फ़ाइलों को कमिट करें और डिप्लॉय करें
जनरेट की गई locale फ़ाइलें वैध JSON हैं जिनकी संरचना आपके स्रोत के समान है। इन्हें अपने रिपॉजिटरी में कमिट करें। हर कंटेंट परिवर्तन के साथ locale को सिंक में रखने के लिए translate स्क्रिप्ट को अपनी CI पाइपलाइन में जोड़ें।
Next.js बहुभाषी उपयोग मामले
SaaS ऐप्स और डैशबोर्ड
अपने पूरे UI स्ट्रिंग लाइब्रेरी का एक स्क्रिप्ट रन में अनुवाद करें। सभी next-intl फॉर्मेटिंग फीचर्स का समर्थन करता है — तिथियाँ, संख्याएँ, बहुवचन — क्योंकि JSON संरचना बिल्कुल संरक्षित रहती है।
कंटेंट साइट्स और ब्लॉग
Sanity या Contentful का उपयोग करने वाली कंटेंट-भारी Next.js साइटों के लिए, PolyLingo का उपयोग पृष्ठ सामग्री के साथ-साथ UI स्ट्रिंग्स का अनुवाद करने के लिए करें — वही API, वही फॉर्मेट संरक्षण गारंटी।
क्षेत्रीय संस्करणों के साथ ई-कॉमर्स
उत्पाद नाम, विवरण, श्रेणी पृष्ठ, और चेकआउट UI का अनुवाद करें। मार्केटिंग कॉपी के लिए Advanced मॉडल का उपयोग करें जहाँ ब्रांड आवाज़ महत्वपूर्ण हो, और फंक्शनल UI स्ट्रिंग्स के लिए Standard।
अक्सर पूछे जाने वाले प्रश्न
क्या यह Next.js App Router के साथ काम करता है?
हाँ। PolyLingo इंटीग्रेशन केवल एक स्क्रिप्ट है जो JSON फ़ाइलें पढ़ती और लिखती है — इसका Next.js आंतरिक भागों पर कोई निर्भरता नहीं है। यह App Router, Pages Router, या किसी भी फ्रेमवर्क के साथ काम करता है। दिखाया गया next-intl कॉन्फ़िगरेशन उदाहरण v4 API का उपयोग करता है जिसमें requestLocale है, जो Next.js 13, 14, और 15 के साथ संगत है।
अगर मेरी messages.json अक्सर बदलती है तो क्या होगा?
अनुशंसित पैटर्न है कि translate स्क्रिप्ट को अपनी CI/CD पाइपलाइन में जोड़ें, जो messages/en.json में परिवर्तनों पर ट्रिगर हो। यह सभी locale फ़ाइलों को स्वचालित रूप से सिंक में रखता है। बार-बार कॉपी परिवर्तन वाली टीमों के लिए, यह locale ड्रिफ्ट को पूरी तरह रोकता है।
क्या PolyLingo next-i18next के साथ भी काम करता है जैसे next-intl के साथ?
हाँ। next-i18next समान locale JSON संरचना का उपयोग करता है। translate स्क्रिप्ट समान रूप से काम करता है — इसे अपनी public/locales/en/ निर्देशिका पर पॉइंट करें और आउटपुट अन्य locale निर्देशिकाओं में लिखें। JSON फॉर्मेट संगतता समान है।
messages फ़ाइल में न होने वाली डायनामिक सामग्री का क्या?
डायनामिक सामग्री — ब्लॉग पोस्ट, उत्पाद विवरण, उपयोगकर्ता-जनित सामग्री — को डेटा लेयर पर अनुवादित किया जाना चाहिए, या तो आपके CMS में या एक बिल्ड स्क्रिप्ट के माध्यम से जो सामग्री को Next.js तक पहुँचने से पहले प्रोसेस करता है। PolyLingo Markdown, HTML, और सादा टेक्स्ट को समान रूप से अच्छी तरह संभालता है।
क्या मैं केवल उन स्ट्रिंग्स का अनुवाद कर सकता हूँ जो पिछली बार से बदली हैं?
इंक्रीमेंटल अनुवाद (केवल बदली गई कुंजियों का अनुवाद) रोडमैप पर है। वर्तमान में स्क्रिप्ट पूरी फ़ाइल को पुनः अनुवादित करता है। अधिकांश संदेश फ़ाइलों (20KB से कम) के लिए, यह हर कमिट पर चलाने के लिए पर्याप्त तेज़ है। बहुत बड़ी फ़ाइलों के लिए, नेमस्पेस द्वारा विभाजन अनुशंसित है।
क्या उत्पादन में जाने से पहले अनुवादों की समीक्षा करने का कोई तरीका है?
अनुशंसित पैटर्न है कि अनुवादित locale फ़ाइलों को समीक्षा के लिए एक अलग ब्रांच या PR में कमिट करें, फिर मुख्य में मर्ज करें। यह उन टीमों के लिए मानक अभ्यास है जिन्हें अनुवाद गुणवत्ता पर मानव समीक्षा की आवश्यकता होती है। PolyLingo एक अच्छा पहला पास उत्पन्न करता है — अधिकांश UI स्ट्रिंग्स के लिए Standard मॉडल आउटपुट को संपादित करने की आवश्यकता नहीं होती।
संबंधित गाइड
JSON locale फ़ाइलों का अनुवाद करें
PolyLingo JSON संरचना, नेस्टेड ऑब्जेक्ट्स, और इंटरपोलेशन वेरिएबल्स को कैसे संभालता है।
हेडलैस CMS के लिए बहुभाषी
UI स्ट्रिंग अनुवाद के साथ-साथ CMS स्तर पर सामग्री का अनुवाद।
फॉर्मेटिंग तोड़े बिना Markdown का अनुवाद करें
Markdown ब्लॉग पोस्ट या MDX पृष्ठों वाली Next.js साइटों के लिए।
5 मिनट से कम में अपनी पहली locale फ़ाइल का अनुवाद प्राप्त करें।
मुफ्त API कुंजी। कोई क्रेडिट कार्ड नहीं। अपने messages JSON पेस्ट करें और तुरंत आउटपुट देखें।
अपनी API कुंजी प्राप्त करेंअनुवाद स्क्रिप्ट सेटअप में 5 मिनट लगते हैं। फ्री टियर — कोई क्रेडिट कार्ड आवश्यक नहीं।