CakePHP তে ইন্টারন্যাশনালাইজেশন (Internationalization বা I18n) একটি গুরুত্বপূর্ণ ফিচার, যা বিভিন্ন ভাষায় অ্যাপ্লিকেশন কনটেন্ট প্রদর্শনের জন্য ব্যবহৃত হয়। এটি আপনার অ্যাপ্লিকেশনকে বিভিন্ন ভাষায় কাস্টমাইজ করা সম্ভব করে, যাতে আপনি একাধিক ভাষায় আপনার ব্যবহারকারীদের কাছে পৌঁছাতে পারেন। CakePHP তে ইন্টারন্যাশনালাইজেশন সেটআপের মাধ্যমে ভাষা পরিবর্তন এবং অনুবাদ পরিচালনা করা যায়।
১. I18n এর প্রাথমিক ধারণা
I18n বা ইন্টারন্যাশনালাইজেশন হলো একটি সফটওয়্যার অ্যাপ্লিকেশনকে এমনভাবে তৈরি করা, যাতে এটি বিভিন্ন ভাষা এবং অঞ্চলের জন্য উপযোগী হয়। এটি সাধারণত ভাষার অনুবাদ, তারিখ, সময় এবং সংখ্যা ফরম্যাটিংয়ের মতো বৈশিষ্ট্যকে সাপোর্ট করে।
CakePHP তে I18n সিস্টেমটি আপনাকে সহজেই বিভিন্ন ভাষায় অনুবাদ ব্যবস্থাপনা করতে সাহায্য করে।
২. CakePHP তে I18n সেটআপ
CakePHP তে ইন্টারন্যাশনালাইজেশন সেটআপ করার জন্য কিছু নির্দিষ্ট পদক্ষেপ অনুসরণ করতে হবে:
১.1. I18n প্লাগইন ইনস্টল করা
CakePHP তে I18n ব্যবহার করতে, প্রথমে CakePHP এর I18n প্লাগইন লোড করতে হবে। CakePHP 4.x ভার্সনে এটি ডিফল্টভাবে অন্তর্ভুক্ত থাকে, তাই আলাদাভাবে ইনস্টল করার প্রয়োজন নেই। তবে, যদি CakePHP 3.x ব্যবহার করেন, তাহলে আপনাকে cakephp/i18n প্লাগইন ইনস্টল করতে হবে।
composer require cakephp/i18n
১.2. পোর্টফোলিও ফাইল তৈরি করা
CakePHP তে ভাষার অনুবাদ করতে po (Portable Object) ফাইল তৈরি করা হয়। আপনি এই ফাইলগুলি src/Locale ডিরেক্টরিতে রাখবেন। উদাহরণস্বরূপ, ইংরেজি এবং বাংলার জন্য আলাদা আলাদা ফাইল তৈরি করা যেতে পারে।
src/Locale/en_US/default.po - ইংরেজি ভাষার জন্য
msgid "Hello"
msgstr "Hello"
src/Locale/bn_BD/default.po - বাংলা ভাষার জন্য
msgid "Hello"
msgstr "হ্যালো"
এখানে msgid হলো মূল টেক্সট এবং msgstr হলো অনুবাদ।
১.3. অনুবাদ ফাইল লোড করা
কন্ট্রোলারে অনুবাদ ফাইল লোড করার জন্য আপনাকে CakePHP তে I18n কম্পোনেন্ট ব্যবহার করতে হবে।
// src/Controller/AppController.php
namespace App\Controller;
use Cake\Controller\Controller;
use Cake\I18n\I18n;
class AppController extends Controller
{
public function initialize(): void
{
parent::initialize();
// ভাষা সেট করা
I18n::setLocale('bn_BD'); // বাংলা ভাষা
}
}
এখানে I18n::setLocale('bn_BD') দিয়ে বাংলা ভাষা সিলেক্ট করা হয়েছে। আপনি আপনার অ্যাপ্লিকেশনের যেকোনো পৃষ্ঠাতে ভাষা পরিবর্তন করতে পারেন।
৩. CakePHP তে ভাষা পরিবর্তন
ভাষা পরিবর্তন করার জন্য, সাধারণত ইউজার ইন্টারফেসে একটি ভাষা নির্বাচন ড্রপডাউন বা লিঙ্ক রাখা হয়, যা ব্যবহারকারীকে ভাষা পরিবর্তন করার সুযোগ দেয়। এটি CakePHP তে সহজেই করা যায়।
৩.1. ভাষা পরিবর্তন লিঙ্ক তৈরি করা
// src/Template/Element/language_switcher.ctp
<?= $this->Html->link('বাংলা', ['controller' => 'Users', 'action' => 'setLanguage', 'lang' => 'bn_BD']) ?>
<?= $this->Html->link('English', ['controller' => 'Users', 'action' => 'setLanguage', 'lang' => 'en_US']) ?>
এখানে, দুটি লিঙ্ক রয়েছে: একটি ইংরেজি এবং অন্যটি বাংলা। ব্যবহারকারী এই লিঙ্কে ক্লিক করলে তাদের ভাষা পরিবর্তিত হবে।
৩.2. ভাষা পরিবর্তনের জন্য কন্ট্রোলার অ্যাকশন
// src/Controller/UsersController.php
namespace App\Controller;
use Cake\I18n\I18n;
class UsersController extends AppController
{
public function setLanguage($lang = null)
{
if ($lang) {
// ইউজারের সিলেক্ট করা ভাষা সেট করা
I18n::setLocale($lang);
}
// ভাষা পরিবর্তনের পর ব্যবহারকারীকে রিডিরেক্ট করা
return $this->redirect($this->referer());
}
}
এখানে, setLanguage() অ্যাকশনটি ব্যবহারকারীকে সিলেক্ট করা ভাষায় রিডিরেক্ট করে। ভাষা পরিবর্তন হলে I18n::setLocale($lang) ফাংশনটি ব্যবহার করা হয়।
৪. CakePHP তে অনুবাদ ফাংশন ব্যবহার
অনুবাদ ব্যবহারের জন্য CakePHP তে __() ফাংশনটি ব্যবহার করা হয়। এটি মূল টেক্সটকে অনুবাদ ফাইল থেকে খুঁজে নিয়ে তার অনুবাদ প্রদর্শন করবে।
// src/Template/Posts/index.ctp
<h1><?= __('Hello') ?></h1>
এখানে, __('Hello') ফাংশনটি Hello টেক্সটকে সিস্টেমে ডিফাইন করা ভাষায় অনুবাদ করে প্রদর্শন করবে।
৫. কাস্টম প্লেসহোল্ডার এবং ভাষার কাস্টমাইজেশন
CakePHP তে কাস্টম প্লেসহোল্ডারও ব্যবহার করা যেতে পারে। যেমন, ব্যবহারকারীর নাম দিয়ে কাস্টম বার্তা প্রেরণ:
// src/Template/Posts/index.ctp
<p><?= __('Welcome, {0}', $user->name) ?></p>
এখানে, {0} প্লেসহোল্ডারটি $user->name এর মান দিয়ে প্রতিস্থাপিত হবে।
৬. ভাষা ফাইলের জেনারেশন এবং সম্পাদনা
CakePHP তে ভাষা ফাইল তৈরি এবং সম্পাদনা করার জন্য poedit নামক একটি টুল ব্যবহার করা যেতে পারে। এটি আপনার ভাষার .po ফাইল তৈরি করতে সাহায্য করে এবং পরে সেগুলো .mo ফাইলে কম্পাইল করে CakePHP তে ব্যবহার করা যায়।
CakePHP তে ইন্টারন্যাশনালাইজেশন সেটআপ করা বেশ সহজ। আপনাকে I18n প্লাগইন ব্যবহার করতে হবে, ভাষা ফাইল তৈরি করতে হবে এবং তারপর সেগুলো কন্ট্রোলার ও ভিউতে লোড করে সঠিক ভাষায় কন্টেন্ট প্রদর্শন করতে হবে। এটি আপনার অ্যাপ্লিকেশনকে একাধিক ভাষায় কাস্টমাইজ করার এবং আন্তর্জাতিক বাজারে প্রবেশ করার সুবিধা দেয়।
Read more