Next.js + PolyLingo

আপনার Next.js অ্যাপে বহুভাষিক যোগ করুন।

একক API কলের মাধ্যমে আপনার লোকেল ফাইল, মার্কডাউন কন্টেন্ট এবং HTML পেজ অনুবাদ করুন। App Router, next-intl এবং যেকোনো i18n রাউটিং সেটআপের সাথে কাজ করে।

App Router
Next.js 13–15 সমর্থিত
next-intl
নেটিভ ইন্টিগ্রেশন
10 langs
এক স্ক্রিপ্ট রান
~3s
সাধারণ অনুবাদ স্ক্রিপ্ট রানটাইম

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/ ডিরেক্টরিতে লিখুন। কমিট করুন। শেষ।

মার্কডাউন সহ কন্টেন্ট-ভারী সাইটের জন্য (Sanity, Contentful), একই পদ্ধতি কন্টেন্টের ক্ষেত্রেও প্রযোজ্য: মার্কডাউন বা HTML হিসেবে এক্সপোর্ট করুন, অনুবাদ করুন, CMS এর API এর মাধ্যমে আবার লিখুন। পুরো পাইপলাইন বিল্ড স্টেপ বা ওয়েবহুক ট্রিগারে চালানো যেতে পারে।

PolyLingo অনুবাদ স্ক্রিপ্ট — এই রিপো translate-messages.mjs নিয়ে আসে
// 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 কনফিগারেশন
// 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 — আপনার বিল্ড পাইপলাইনে translate যোগ করুন
// 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 অ্যাপে বহুভাষিক সেটআপ করুন

1

আপনার ইংরেজি মেসেজ ফাইল দিয়ে next-intl সেটআপ করুন

next-intl ইনস্টল করুন এবং আপনার i18n.ts ও মিডলওয়্যার কনফিগার করুন। সব UI স্ট্রিং messages/en.json এ লিখুন। ফাইলের স্ট্রাকচার আপনার অ্যাপের প্রয়োজন অনুযায়ী — ফ্ল্যাট বা নেস্টেড। এটি আপনার একক সত্যের উৎস হবে।

2

অনুবাদ স্ক্রিপ্ট চালান

একটি ছোট Node স্ক্রিপ্ট থেকে PolyLingo JSON API ব্যবহার করুন (উপরের কোড দেখুন)। এই মনোরিপোতে, frontend/ থেকে npm run i18n:polylingo চালান POLYLINGO_API_KEY সেট করে — এটি বড় namespace গুলো নির্ভরযোগ্যতার জন্য ভাগ করে। সাধারণ রান সম্পূর্ণ মার্কেটিং বান্ডেলের জন্য এক মিনিটেরও কম সময় নেয়।

3

লোকেল ফাইলগুলো কমিট করুন এবং ডিপ্লয় করুন

উত্পন্ন লোকেল ফাইলগুলো বৈধ 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 কী পান

অনুবাদ স্ক্রিপ্ট সেটআপ করতে ৫ মিনিট লাগে। ফ্রি টিয়ার — কোনো ক্রেডিট কার্ডের প্রয়োজন নেই।

আপনার Next.js অ্যাপে বহুভাষিক যোগ করুন — PolyLingo | PolyLingo