Next.js অ্যাপ্লিকেশনে যা Pages Router ব্যবহার করছে, সেখানে আন্তর্জাতিকীকরণ কীভাবে বাস্তবায়ন করবেন
আপনার React অ্যাপ্লিকেশনকে আরও অ্যাক্সেসযোগ্য করুন এবং আন্তর্জাতিকীকরণ (i18n) ব্যবহার করে নতুন বাজারে পৌঁছান।
বিশ্ব যত বেশি বৈশ্বিক হচ্ছে, তত বেশি গুরুত্বপূর্ণ হয়ে উঠছে ওয়েব ডেভেলপারদের এমন অ্যাপ্লিকেশন তৈরি করা যা বিভিন্ন দেশ ও সংস্কৃতির ব্যবহারকারীদের চাহিদা পূরণ করতে পারে। আন্তর্জাতিককরণ (i18n) হল এক প্রধান উপায়, যা আপনাকে আপনার অ্যাপ্লিকেশনকে বিভিন্ন ভাষা, মুদ্রা এবং তারিখের ফরম্যাট অনুযায়ী অভিযোজিত করতে দেয়।
এই টিউটোরিয়ালে, আমরা দেখব কীভাবে সার্ভার-সাইড রেন্ডারিংসহ আপনার React Next.js অ্যাপ্লিকেশনে আন্তর্জাতিককরণ যোগ করা যায়। TL;DR: সম্পূর্ণ উদাহরণটি এখানে দেখুন।
এই গাইডটি Next.js অ্যাপ্লিকেশনগুলোর জন্য যারা Pages Router ব্যবহার করছে।
আপনি যদি App Router ব্যবহার করে থাকেন, অনুগ্রহ করে পরিবর্তে এই গাইডটি দেখুন।
ধাপ ১: একটি i18n লাইব্রেরি ইনস্টল করুন
আপনার Next.js অ্যাপে আন্তর্জাতিকীকরণ (i18n) বাস্তবায়ন করতে, আমরা প্রথমে একটি i18n লাইব্রেরি নির্বাচন করব। কয়েকটি জনপ্রিয় লাইব্রেরি আছে, যার মধ্যে রয়েছে next-intl. তবে, এই উদাহরণে আমরা ব্যবহার করব TacoTranslate.
TacoTranslate অত্যাধুনিক AI ব্যবহার করে স্বয়ংক্রিয়ভাবে আপনার স্ট্রিংগুলো যেকোনো ভাষায় অনুবাদ করে, এবং JSON ফাইলের ক্লান্তিকর ব্যবস্থাপনা থেকে আপনাকে মুক্ত করে।
চলুন এটি আপনার টার্মিনালে npm ব্যবহার করে ইনস্টল করি:
npm install tacotranslateধাপ ২: একটি বিনামূল্যের TacoTranslate অ্যাকাউন্ট তৈরি করুন
এখন যখন আপনি মডিউলটি ইনস্টল করেছেন, তখন আপনার TacoTranslate অ্যাকাউন্ট, একটি অনুবাদ প্রকল্প, এবং সংশ্লিষ্ট API কী তৈরি করার সময় এসেছে। এখানে একটি অ্যাকাউন্ট তৈরি করুন। এটি বিনামূল্যের, এবং এতে ক্রেডিট কার্ড যোগ করার প্রয়োজন নেই।
TacoTranslate অ্যাপ্লিকেশন UI-তে একটি প্রকল্প তৈরি করুন এবং এর API কী ট্যাবে যান। একটি read কী তৈরি করুন, এবং একটি read/write কী তৈরি করুন। আমরা এগুলোকে পরিবেশ ভেরিয়েবল হিসেবে সংরক্ষণ করব। read কী-কে আমরা public বলি এবং read/write কী-টি secret। উদাহরণস্বরূপ, আপনি এগুলো আপনার প্রকল্পের রুটে থাকা .env ফাইলে যোগ করতে পারেন।
TACOTRANSLATE_PUBLIC_API_KEY=123456
TACOTRANSLATE_SECRET_API_KEY=789010নিশ্চিত করুন যে গোপন read/write API কী কখনই ক্লায়েন্ট-সাইড প্রোডাকশন পরিবেশে ফাঁস করা হবে না।
আমরা আরও দুটি পরিবেশ ভেরিয়েবল যোগ করব: TACOTRANSLATE_DEFAULT_LOCALE এবং TACOTRANSLATE_ORIGIN.
TACOTRANSLATE_DEFAULT_LOCALE: ডিফল্ট ফলব্যাক লোকেল কোড। এই উদাহরণে, আমরা এটিকে ইংরেজির জন্যenহিসেবে সেট করব।TACOTRANSLATE_ORIGIN: আপনার স্ট্রিংগুলো যেখানে সংরক্ষিত থাকবে সেই “ফোল্ডার”, উদাহরণস্বরূপ আপনার ওয়েবসাইটের URL। origins সম্পর্কে এখানে আরও পড়ুন।
TACOTRANSLATE_DEFAULT_LOCALE=en
TACOTRANSLATE_ORIGIN=your-website-url.comধাপ ৩: TacoTranslate সেট আপ করা
আপনার অ্যাপ্লিকেশনের সাথে TacoTranslate একীভূত করার জন্য, আপনাকে পূর্বে পাওয়া API কী ব্যবহার করে একটি ক্লায়েন্ট তৈরি করতে হবে। উদাহরণস্বরূপ, /tacotranslate-client.js নামে একটি ফাইল তৈরি করুন।
const {default: createTacoTranslateClient} = require('tacotranslate');
const tacoTranslate = createTacoTranslateClient({
apiKey:
process.env.TACOTRANSLATE_SECRET_API_KEY ??
process.env.TACOTRANSLATE_PUBLIC_API_KEY ??
process.env.TACOTRANSLATE_API_KEY ??
'',
projectLocale: process.env.TACOTRANSLATE_DEFAULT_LOCALE ?? '',
});
module.exports = tacoTranslate;আমরা শীঘ্রই TACOTRANSLATE_API_KEY স্বয়ংক্রিয়ভাবে সংজ্ঞায়িত করব।
ক্লায়েন্টটি আলাদা একটি ফাইলে তৈরি করলে পরে আবার ব্যবহার করা সহজ হয়। এখন, একটি কাস্টম /pages/_app.tsx ব্যবহার করে, আমরা TacoTranslate প্রোভাইডারটি যোগ করব।
import React from 'react';
import {type AppProps} from 'next/app';
import {type Origin, type Locale, type Localizations} from 'tacotranslate';
import TacoTranslate from 'tacotranslate/react';
import TacoTranslateHead from 'tacotranslate/next/head';
import tacoTranslate from '../tacotranslate-client';
type PageProperties = {
origin: Origin;
locale: Locale;
locales: Locale[];
localizations: Localizations;
};
export default function App({Component, pageProps}: AppProps<PageProperties>) {
const {origin, locale, locales, localizations} = pageProps;
return (
<TacoTranslate
client={tacoTranslate}
origin={origin}
locale={locale}
localizations={localizations}
>
<TacoTranslateHead rootUrl="https://your-website.com" locales={locales} />
<Component {...pageProps} />
</TacoTranslate>
);
}যদি আপনার কাছে ইতিমধ্যেই কাস্টম pageProps এবং _app.tsx থাকে, অনুগ্রহ করে উপরের বৈশিষ্ট্যসমূহ এবং কোডসহ সংজ্ঞাটি সম্প্রসারিত করুন।
ধাপ ৪: সার্ভার-সাইড রেন্ডারিং বাস্তবায়ন
TacoTranslate আপনার অনুবাদগুলির সার্ভার-সাইড রেন্ডারিংকে সমর্থন করে। এটি ব্যবহারকারীর অভিজ্ঞতাকে অনেক উন্নত করে, কারণ অনুবাদিত বিষয়বস্তুকে তাৎক্ষণিকভাবে দেখানো হয়—প্রথমে অনুবাদহীন বিষয়বস্তুর ঝলক দেখা যায় না। এছাড়া, আমাদের কাছে ইতিমধ্যেই প্রয়োজনীয় সব অনুবাদ থাকায় ক্লায়েন্টে নেটওয়ার্ক অনুরোধগুলো এড়ানো যায়।
আমরা /next.config.js ফাইল তৈরি করে বা সংশোধন করে শুরু করব।
const withTacoTranslate = require('tacotranslate/next/config').default;
const tacoTranslateClient = require('./tacotranslate-client');
module.exports = async () => {
const config = {};
return withTacoTranslate(config, {
client: tacoTranslateClient,
isProduction:
process.env.TACOTRANSLATE_ENV === 'production' ||
process.env.VERCEL_ENV === 'production' ||
(!(process.env.TACOTRANSLATE_ENV || process.env.VERCEL_ENV) &&
process.env.NODE_ENV === 'production'),
});
};আপনার সেটআপ অনুযায়ী isProduction চেকটি পরিবর্তন করুন। যদি true, TacoTranslate পাবলিক API কী প্রদর্শন করবে। যদি আমরা লোকাল, টেস্ট, বা স্টেজিং পরিবেশে থাকি (isProduction is false), আমরা সিক্রেট read/write API কী ব্যবহার করব যাতে নতুন স্ট্রিংগুলো অনুবাদের জন্য প্রেরণ করা হয়।
এ পর্যন্ত আমরা কেবল Next.js অ্যাপটিকে সমর্থিত ভাষার একটি তালিকা দিয়ে সেটআপ করেছি। পরবর্তী কাজটি হল আপনার সব পৃষ্ঠার অনুবাদগুলো নিয়ে আসা। তা করতে, আপনার চাহিদা অনুসারে getTacoTranslateStaticProps অথবা getTacoTranslateServerSideProps ব্যবহার করবেন।
এই ফাংশনগুলো তিনটি আর্গুমেন্ট নেয়: একটি Next.js Static Props Context অবজেক্ট, TacoTranslate-এর কনফিগারেশন, এবং ঐচ্ছিক Next.js প্রপার্টি। দ্রষ্টব্য: revalidate on getTacoTranslateStaticProps ডিফল্টভাবে 60 হিসাবে সেট করা আছে, যাতে আপনার অনুবাদগুলো আপ-টু-ডেট থাকে।
কোনো পৃষ্ঠায় এই যে কোনো একটি ফাংশন ব্যবহার করতে, ধরুন আপনার কাছে /pages/hello-world.tsx নামে একটি পেজ ফাইল আছে।
import {Translate} from 'tacotranslate/react';
import getTacoTranslateStaticProps from 'tacotranslate/next/get-static-props';
import tacoTranslateClient from '../tacotranslate-client';
export async function getStaticProps(context) {
return getTacoTranslateStaticProps(context, {client: tacoTranslateClient});
}
export default function Page() {
return <Translate string="Hello, world!"/>;
}আপনি এখন আপনার সমস্ত React কম্পোনেন্টে স্ট্রিংগুলো অনুবাদ করার জন্য Translate কম্পোনেন্টটি ব্যবহার করতে পারবেন।
import {Translate} from 'tacotranslate/react';
function Component() {
return <Translate string="Hello, world!"/>
}ধাপ ৫: ডিপ্লয় করুন এবং পরীক্ষা করুন!
আমরা শেষ করেছি! আপনার React অ্যাপ্লিকেশন এখন স্বয়ংক্রিয়ভাবে অনুবাদ হবে যখন আপনি Translate কম্পোনেন্টে যেকোনো স্ট্রিং যোগ করবেন। দ্রষ্টব্য: শুধুমাত্র সেই পরিবেশগুলোই নতুন স্ট্রিং তৈরি করতে পারবে যেগুলোর API কী-তে read/write অনুমতি আছে। আমরা সুপারিশ করি একটি বন্ধ এবং নিরাপদ স্টেজিং পরিবেশ রাখুন যেখানে আপনি এমন একটি API কী ব্যবহার করে আপনার প্রোডাকশন অ্যাপ্লিকেশন পরীক্ষা করতে পারবেন, লাইভ হওয়ার আগে নতুন স্ট্রিংগুলো যুক্ত করে। এটি কারো কারো আপনার গোপন API কী চুরি হওয়া থেকে রোধ করবে, এবং সম্ভবত নতুন, অপ্রাসঙ্গিক স্ট্রিং যোগ করে আপনার অনুবাদ প্রকল্পকে অতিরিক্তভাবে ভারী করে দেবে।
নিশ্চিত করুন যে আমাদের GitHub প্রোফাইলে সম্পূর্ণ উদাহরণটি দেখুন. ওখানেই আপনি App Router ব্যবহার করে এটি কীভাবে করতে হয় তার একটি উদাহরণও পাবেন! যদি কোনো সমস্যা সম্মুখীন হন, নির্দ্বিধায় যোগাযোগ করুন, আমরা সাহায্য করতে অত্যন্ত খুশি হব।
TacoTranslate আপনাকে স্বয়ংক্রিয়ভাবে আপনার React অ্যাপ্লিকেশনগুলোকে ৭৫টিরও বেশি ভাষায় দ্রুত স্থানীয়করণ করতে সাহায্য করে। আজই শুরু করুন!