আপনার Next.js অ্যাপে বহুভাষিক যোগ করুন।
একক API কলের মাধ্যমে আপনার লোকেল ফাইল, মার্কডাউন কনটেন্ট এবং HTML পেজ অনুবাদ করুন। App Router, next-intl এবং যেকোনো i18n রাউটিং সেটআপের সাথে কাজ করে।
Next.js আপনাকে রাউটিং দেয়। এটি আপনাকে অনুবাদ দেয় না।
Next.js App Router লোকেল-ভিত্তিক রাউটিংয়ের জন্য চমৎকার বিল্ট-ইন সাপোর্ট দেয়। next-intl এর মতো লাইব্রেরিগুলো অনুবাদ ফাইল এবং লোকেল পরিবর্তন পরিচালনা সহজ করে তোলে। কিন্তু তারা অনুবাদ নিজেই করে না — প্রতিটি ভাষায় অনুবাদিত কনটেন্ট তৈরি করতে হয়, এবং সাধারণত সেই কাজটি আপনি করেন। বেশিরভাগ দলের জন্য ওয়ার্কফ্লো হলো ইংরেজি JSON DeepL এ কপি করা, ফরম্যাটিং ঠিক করা, ফলাফল পেস্ট করা, প্রতিটি ভাষার জন্য পুনরাবৃত্তি করা। এটি ধীর, ত্রুটিপূর্ণ এবং স্কেল হয় না।
সর্বাধিক প্রচলিত ওয়ার্কফ্লো হলো সোর্স কোডের ভিতরে সব UI স্ট্রিং ইংরেজিতে লেখা, তারপর প্রতিটি লক্ষ্য ভাষার জন্য messages.json ফাইল অনুবাদ করা। তাত্ত্বিকভাবে এটি সরল। বাস্তবে, ১০+ লোকেল ফাইল সোর্স পরিবর্তনের সাথে সিঙ্ক রাখা একটি পুনরাবৃত্তি সমস্যা হয়ে দাঁড়ায়। ইংরেজি কপি পরিবর্তিত হলে প্রতিটি লোকেল ফাইল আপডেট করতে হয়। স্ট্যান্ডার্ড অনুবাদ API ব্যবহারে কী নাম নষ্ট হয়, ভেরিয়েবল প্লেসহোল্ডার অনূদিত হয়, এবং JSON স্ট্রাকচার লোকেলগুলোর মধ্যে বিচ্যুত হয় — যা সূক্ষ্ম রানটাইম বাগ সৃষ্টি করে যা খুঁজে পাওয়া কঠিন।
PolyLingo আপনার বিদ্যমান Next.js i18n সেটআপে ফিট করে।
আপনি যদি next-intl বা অন্য কোনো i18n লাইব্রেরি ব্যবহার করেন, আপনার মেসেজগুলো ইতিমধ্যেই JSON এ থাকে। PolyLingo সেই JSON নিয়ে অনুবাদ মডেলের মাধ্যমে পাঠায় এবং প্রতিটি লক্ষ্য ভাষার জন্য অনুবাদিত কপি ফেরত দেয় — কী অপরিবর্তিত, নেস্টিং অক্ষত, এবং স্ট্রিং মান সঠিকভাবে অনূদিত। আপনি এটি বিল্ড স্ক্রিপ্ট, ওয়েবহুক বা PolyLingo UI থেকে কল করতে পারেন। ফলাফল সরাসরি আপনার মেসেজ ডিরেক্টরিতে পড়ে।
ওয়ার্কফ্লো: আপনার ইংরেজি messages.json লিখুন। একটি একক স্ক্রিপ্ট চালান যা PolyLingo API কে আপনার সোর্স ফাইল এবং সব লক্ষ্য ভাষার কোড পাঠায়। প্রতিটি ভাষার জন্য একটি অনুবাদিত JSON ফাইল পান, একই স্ট্রাকচারে। প্রতিটি messages/ ডিরেক্টরিতে লিখুন। কমিট করুন। শেষ।
মার্কডাউন সহ CMS (Sanity, Contentful) সমৃদ্ধ কনটেন্ট সাইটের জন্য একই পদ্ধতি প্রযোজ্য: মার্কডাউন বা 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 ফাইল সরাসরি অনুবাদ করুন — কী সবসময় সংরক্ষিত থাকে
- ✓ব্লগ পোস্ট এবং ডকস পেজের জন্য মার্কডাউন কনটেন্ট অনুবাদ করুন
- ✓next-intl, next-i18next, এবং কাস্টম সেটআপের সাথে কাজ করে
- ✓REST API বিল্ড স্ক্রিপ্ট এবং CMS ওয়েবহুকের সাথে ইন্টিগ্রেট করে
- ✓একক অনুরোধে সব ৪৩টি ভাষা
- ✓ফ্রি টিয়ার — প্রতি মাসে ৫০,০০০ টোকেন
- ✓এই রিপো ওয়ার্কফ্লো নিজেই ব্যবহার করে: npm run i18n:polylingo messages/en.json থেকে মার্কেটিং লোকেল পুনরায় তৈরি করে (MARKETING_I18N.md দেখুন)।
- ✓App Router এবং Pages Router এর সাথে কাজ করে
- ✓আউটপুট ফাইলগুলো কমিটের জন্য প্রস্তুত — পুনরায় ফরম্যাটিং দরকার নেই
আপনার Next.js অ্যাপে বহুভাষিক সেটআপ করুন
আপনার ইংরেজি মেসেজ ফাইল দিয়ে next-intl সেটআপ করুন
next-intl ইনস্টল করুন এবং আপনার i18n.ts ও মিডলওয়্যার কনফিগার করুন। সব UI স্ট্রিং messages/en.json এ লিখুন। ফাইলের স্ট্রাকচার আপনার অ্যাপের প্রয়োজন অনুযায়ী — ফ্ল্যাট বা নেস্টেড। এটি আপনার একক সত্যের উৎস হবে।
অনুবাদ স্ক্রিপ্ট চালান
উপরের কোড দেখুন, একটি ছোট Node স্ক্রিপ্ট থেকে PolyLingo JSON API ব্যবহার করুন। এই মনোরিপোতে, frontend/ থেকে npm run i18n:polylingo চালান POLYLINGO_API_KEY সেট করে — এটি বড় namespace গুলো নির্ভরযোগ্যতার জন্য ভাগ করে। সম্পূর্ণ মার্কেটিং বান্ডেলের জন্য সাধারণত এক মিনিটের কম সময় লাগে।
লোকেল ফাইলগুলো কমিট করুন এবং ডিপ্লয় করুন
উত্পন্ন লোকেল ফাইলগুলো বৈধ JSON এবং আপনার সোর্সের সাথে একই স্ট্রাকচারে। সেগুলো আপনার রিপোতে কমিট করুন। প্রতিটি কনটেন্ট পরিবর্তনের সাথে লোকেল সিঙ্ক রাখতে 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 পরিবর্তনের সময় ট্রিগার হয়। এটি স্বয়ংক্রিয়ভাবে সব লোকেল ফাইল সিঙ্ক রাখে। যারা প্রায়ই কপি পরিবর্তন করেন তাদের জন্য এটি লোকেল ড্রিফট সম্পূর্ণরূপে প্রতিরোধ করে।
PolyLingo কি next-i18next এবং next-intl উভয়ের সাথেই কাজ করে?
হ্যাঁ। next-i18next একই লোকেল JSON স্ট্রাকচার ব্যবহার করে। translate স্ক্রিপ্ট একইভাবে কাজ করে — এটি আপনার public/locales/en/ ডিরেক্টরিকে নির্দেশ করে এবং আউটপুট অন্য লোকেল ডিরেক্টরিতে লেখে। JSON ফরম্যাট সামঞ্জস্য একই।
messages ফাইলে না থাকা ডায়নামিক কনটেন্টের কী হবে?
ডায়নামিক কনটেন্ট — ব্লগ পোস্ট, পণ্য বর্ণনা, ব্যবহারকারী-উৎপন্ন কনটেন্ট — ডেটা স্তরে অনুবাদ করা উচিত, হয় আপনার CMS এ অথবা একটি বিল্ড স্ক্রিপ্টের মাধ্যমে যা কনটেন্ট Next.js এ পৌঁছানোর আগে প্রক্রিয়া করে। PolyLingo মার্কডাউন, HTML এবং প্লেইন টেক্সট সমানভাবে ভালভাবে পরিচালনা করে।
আমি কি শুধুমাত্র শেষ রান থেকে পরিবর্তিত স্ট্রিংগুলোই অনুবাদ করতে পারি?
ইনক্রিমেন্টাল অনুবাদ (শুধুমাত্র পরিবর্তিত কী অনুবাদ) রোডম্যাপে আছে। বর্তমানে স্ক্রিপ্ট পুরো ফাইল পুনরায় অনুবাদ করে। বেশিরভাগ মেসেজ ফাইলের (২০KB এর নিচে) জন্য এটি প্রতিটি কমিটে চালানোর জন্য যথেষ্ট দ্রুত। খুব বড় ফাইলের জন্য namespace অনুযায়ী ভাগ করা সুপারিশ করা হয়।
অনুবাদ প্রোডাকশনে যাওয়ার আগে রিভিউ করার কোনো উপায় আছে?
প্রস্তাবিত প্যাটার্ন হলো অনুবাদিত লোকেল ফাইলগুলো আলাদা ব্রাঞ্চ বা PR এ কমিট করা যাতে রিভিউ করা যায়, তারপর মেইনে মার্জ করা হয়। এটি এমন দলের জন্য স্ট্যান্ডার্ড প্র্যাকটিস যারা অনুবাদের গুণগত মানে মানব রিভিউ প্রয়োজন। PolyLingo একটি ভালো প্রথম পাস তৈরি করে — বেশিরভাগ UI স্ট্রিংয়ের জন্য Standard মডেল আউটপুট সম্পাদনার প্রয়োজন হয় না।
সম্পর্কিত গাইড
৫ মিনিটের মধ্যে আপনার প্রথম লোকেল ফাইল অনুবাদ করুন।
ফ্রি API কী। কোনো ক্রেডিট কার্ড দরকার নেই। আপনার মেসেজ JSON পেস্ট করুন এবং ফলাফল তৎক্ষণাৎ দেখুন।
আপনার API কী পানঅনুবাদ স্ক্রিপ্ট সেটআপ করতে ৫ মিনিট লাগে। ফ্রি টিয়ার — কোনো ক্রেডিট কার্ডের প্রয়োজন নেই।