Yii ফ্রেমওয়ার্কে মাল্টি-ল্যাঙ্গুয়েজ সাপোর্ট প্রদান করার জন্য একটি শক্তিশালী ইন্টারন্যাশনালাইজেশন (i18n) এবং লোকালাইজেশন (l10n) সিস্টেম রয়েছে। এর মাধ্যমে আপনি অ্যাপ্লিকেশনকে একাধিক ভাষায় কনফিগার করতে পারেন, যাতে আপনার ওয়েবসাইট বা অ্যাপ্লিকেশন বিভিন্ন ভাষায় প্রদর্শিত হয়। Yii ফ্রেমওয়ার্কে মাল্টি-ল্যাঙ্গুয়েজ সাপোর্ট ইমপ্লিমেন্ট করা বেশ সহজ এবং এর জন্য নির্দিষ্ট কিছু স্টেপ অনুসরণ করতে হয়।
১. আন্তর্জাতিকীকরণ (Internationalization) এবং স্থানীয়করণ (Localization)
Internationalization (i18n) হল এমন একটি প্রক্রিয়া যার মাধ্যমে একটি অ্যাপ্লিকেশনকে বিভিন্ন ভাষায় ব্যবহারযোগ্য করে তোলা হয়। এটি কোডের মধ্যে ভাষার নির্দিষ্ট টেক্সট বা কনস্ট্যান্ট গুলোকে পরিবর্তন করার সুযোগ দেয়।
Localization (l10n) হল নির্দিষ্ট ভাষার জন্য অ্যাপ্লিকেশনটি কাস্টমাইজ করা, যেমন ভাষার ধরন, ডেটা ফরম্যাট, সংখ্যা এবং মুদ্রার ধরন ইত্যাদি।
Yii ফ্রেমওয়ার্কে এটি বাস্তবায়ন করতে নিম্নলিখিত ধাপগুলো অনুসরণ করা যায়।
২. ভাষা কনফিগারেশন সেটআপ
প্রথমে, আপনাকে অ্যাপ্লিকেশনটি মাল্টি-ল্যাঙ্গুয়েজ সমর্থন করতে কনফিগার করতে হবে। Yii ফ্রেমওয়ার্কে ভাষা পরিবর্তন করার জন্য Yii::$app->language ব্যবহার করা হয়।
২.১. অ্যাপ্লিকেশন কনফিগারেশন পরিবর্তন
config/web.php ফাইলে ভাষা কনফিগার করুন। এই কনফিগারেশনে আপনি ডিফল্ট ভাষা নির্ধারণ করবেন এবং অন্যান্য ভাষার জন্য ট্রান্সলেশন ফাইলগুলো লোড করবেন।
'language' => 'en-US', // ডিফল্ট ভাষা
'components' => [
'i18n' => [
'translations' => [
'app*' => [
'class' => 'yii\i18n\PhpMessageSource',
'basePath' => '@app/messages', // ট্রান্সলেশন ফাইলের লোকেশন
'fileMap' => [
'app' => 'app.php', // ডিফল্ট ট্রান্সলেশন ফাইল
],
],
],
],
],
এখানে, language দিয়ে আপনি অ্যাপ্লিকেশনের ডিফল্ট ভাষা নির্ধারণ করেছেন এবং i18n কম্পোনেন্টের মাধ্যমে ভাষার জন্য ট্রান্সলেশন ফাইলের অবস্থান নির্দিষ্ট করেছেন।
২.২. ভাষার ফাইল তৈরি করা
messages ফোল্ডারে বিভিন্ন ভাষার জন্য আলাদা আলাদা ফাইল তৈরি করতে হবে। উদাহরণস্বরূপ, ইংরেজি এবং বাংলা ভাষার জন্য ট্রান্সলেশন ফাইল তৈরি করা হবে।
- messages/en/app.php (ইংরেজি ভাষার জন্য):
return [
'Hello, World!' => 'Hello, World!',
'Welcome to Yii Framework' => 'Welcome to Yii Framework',
];
- messages/bn/app.php (বাংলা ভাষার জন্য):
return [
'Hello, World!' => 'হ্যালো, বিশ্ব!',
'Welcome to Yii Framework' => 'Yii ফ্রেমওয়ার্কে স্বাগতম',
];
এখানে, app.php ফাইলগুলোতে ট্রান্সলেটেড স্ট্রিংগুলোর অ্যারে রাখা হয়েছে।
৩. ভাষা পরিবর্তন করার জন্য UI তৈরি করা
এখন, ব্যবহারকারী যদি ভাষা পরিবর্তন করতে চায়, তাহলে তাকে একটি UI প্রদান করতে হবে। এটি সাধারণত একটি ড্রপডাউন মেনু বা ল্যাংগুয়েজ সুইচারের মাধ্যমে করা হয়।
৩.১. ভাষা সুইচারের উদাহরণ
use yii\helpers\Html;
use yii\helpers\Url;
$languageOptions = [
'en-US' => 'English',
'bn-BD' => 'বাংলা',
];
echo Html::beginForm(Url::to(['site/language']), 'post');
echo Html::dropDownList('language', Yii::$app->language, $languageOptions, [
'onchange' => 'this.form.submit()',
]);
echo Html::endForm();
এখানে, একটি ড্রপডাউন লিস্ট তৈরি করা হয়েছে যেখানে ইউজার ভাষা নির্বাচন করতে পারবেন। onchange ইভেন্টে ফর্মটি সাবমিট হয়ে যাবে এবং ভাষা পরিবর্তিত হবে।
৩.২. ভাষা পরিবর্তনের জন্য অ্যাকশন তৈরি করা
এখন, SiteController এ একটি অ্যাকশন তৈরি করে ব্যবহারকারী যে ভাষা নির্বাচন করবেন তা গ্রহণ করতে হবে।
public function actionLanguage($language)
{
Yii::$app->language = $language;
return $this->goBack();
}
এই অ্যাকশনের মাধ্যমে ইউজারের নির্বাচন করা ভাষা Yii::$app->language এ সেট হয়ে যাবে এবং পেজটি পুনরায় রেন্ডার হবে।
৪. ট্রান্সলেশন ব্যবহার
এখন আপনি আপনার অ্যাপ্লিকেশনে ট্রান্সলেটেড স্ট্রিংগুলো ব্যবহার করতে পারবেন। Yii ফ্রেমওয়ার্কে ট্রান্সলেটেড স্ট্রিং পেতে Yii::t() মেথড ব্যবহার করা হয়।
echo Yii::t('app', 'Hello, World!');
এখানে, app হচ্ছে ডোমেইন (যা আপনার ভাষার ফাইলের নামের সাথে মেলে) এবং 'Hello, World!' হচ্ছে সেই স্ট্রিং যেটি আপনি ট্রান্সলেট করতে চান।
৫. ডেটা লোকালাইজেশন
শুধু স্ট্রিং নয়, আপনি ডেটা যেমন তারিখ, সময়, সংখ্যা ইত্যাদিও লোকালাইজ করতে পারেন। Yii ফ্রেমওয়ার্কে এই কাজটি খুবই সহজ। আপনি yii\i18n\Formatter ক্লাস ব্যবহার করে এই কাজ করতে পারেন।
$formatter = Yii::$app->formatter;
$formatter->locale = 'bn-BD'; // বাংলা লোকাল সেট করা
echo $formatter->asDate('2024-12-16', 'long');
এখানে, asDate() মেথড দিয়ে আপনি তারিখটি নির্দিষ্ট লোকাল অনুযায়ী ফরম্যাট করতে পারবেন।
সারাংশ
Yii ফ্রেমওয়ার্কে মাল্টি-ল্যাঙ্গুয়েজ সাপোর্ট ইমপ্লিমেন্ট করা খুবই সহজ। Internationalization (i18n) এবং Localization (l10n) সিস্টেম ব্যবহার করে আপনি আপনার অ্যাপ্লিকেশনকে একাধিক ভাষায় কনফিগার করতে পারেন। ভাষার জন্য ট্রান্সলেশন ফাইল তৈরি করে, UI ড্রপডাউন বা সুইচারের মাধ্যমে ব্যবহারকারীর ভাষা পরিবর্তন করা যায়। এছাড়াও, স্ট্রিং এবং ডেটা লোকালাইজেশন সহজেই পরিচালনা করা যায়।