CakePHP তে ইন্টারন্যাশনালাইজেশন (i18n) এবং লোকালাইজেশন (l10n) একসাথে ব্যবহার করে একটি অ্যাপ্লিকেশনকে বিভিন্ন ভাষায় ব্যবহারযোগ্য করা সম্ভব। ইন্টারন্যাশনালাইজেশন হল এমন একটি প্রক্রিয়া যা অ্যাপ্লিকেশন বা সফটওয়্যারকে এমনভাবে ডিজাইন করে যাতে এটি বিভিন্ন ভাষা ও সংস্কৃতির জন্য উপযোগী হয়। লোকালাইজেশন হল সেই প্রক্রিয়া যার মাধ্যমে অ্যাপ্লিকেশনকে নির্দিষ্ট ভাষা ও সংস্কৃতির উপযোগী করা হয়।
CakePHP তে i18n এবং l10n ব্যবহারের জন্য কিছু নির্দিষ্ট কনফিগারেশন এবং টুলস রয়েছে যা আপনাকে একটি মাল্টি-ল্যাঙ্গুয়েজ ওয়েব অ্যাপ্লিকেশন তৈরি করতে সাহায্য করবে।
ইন্টারন্যাশনালাইজেশন (i18n) কী?
ইন্টারন্যাশনালাইজেশন (i18n) হল সেই প্রক্রিয়া যা একটি অ্যাপ্লিকেশনকে এমনভাবে তৈরি করে যাতে এটি ভবিষ্যতে সহজেই বিভিন্ন ভাষায় রূপান্তরিত (localize) করা যেতে পারে। এতে প্রোগ্রামিং কোড, ইউজার ইন্টারফেস, এবং অন্যান্য উপাদানগুলিকে ভাষার নিরপেক্ষভাবে ডিজাইন করা হয়।
লোকালাইজেশন (l10n) কী?
লোকালাইজেশন (l10n) হল সেই প্রক্রিয়া যার মাধ্যমে নির্দিষ্ট ভাষা, সংস্কৃতি এবং অঞ্চল অনুসারে অ্যাপ্লিকেশনকে কাস্টমাইজ করা হয়। এটি ভাষার অনুবাদ, স্থানীয় ডেটা ফরম্যাট (যেমন তারিখ, সময়, মুদ্রা ইত্যাদি) এবং অন্যান্য সাংস্কৃতিক উপাদানগুলির রূপান্তরের মাধ্যমে করা হয়।
CakePHP তে i18n এবং l10n কনফিগারেশন
CakePHP তে i18n এবং l10n কার্যকরীভাবে ব্যবহারের জন্য কয়েকটি গুরুত্বপূর্ণ ধাপ রয়েছে:
১. লোকালাইজেশন ফাইল তৈরি (Creating Localization Files)
CakePHP তে ভাষার কন্টেন্ট এবং অনুবাদগুলি .po ফাইলের মাধ্যমে সংরক্ষণ করা হয়। আপনি কাস্টম ভাষা ফাইল তৈরি করতে পারেন, যা src/Locale/ ডিরেক্টরির মধ্যে রাখা হয়।
উদাহরণস্বরূপ, ইংরেজি এবং বাংলা ভাষার জন্য ফাইল তৈরি করা যাবে:
src/Locale/en_US/default.posrc/Locale/bn/default.po
এই .po ফাইলগুলোতে আপনি বিভিন্ন স্ট্রিং অনুবাদ করতে পারবেন। এখানে একটি উদাহরণ দেওয়া হলো:
# src/Locale/en_US/default.po
msgid "Hello, world!"
msgstr "Hello, world!"
# src/Locale/bn/default.po
msgid "Hello, world!"
msgstr "হ্যালো, বিশ্ব!"
এই ফাইলগুলোতে msgid মূল স্ট্রিং এবং msgstr সেই স্ট্রিং-এর অনুবাদ নির্দেশ করে।
২. ভাষা চয়ন এবং সেশন কনফিগারেশন (Language Selection and Session Configuration)
CakePHP তে ভাষা নির্বাচন করা এবং ব্যবহারকারীর ভাষা সেশনেই সংরক্ষণ করা হয়। সাধারণত, আপনি কনফিগারেশন ফাইলে ডিফল্ট ভাষা সেট করবেন এবং পরে কন্ট্রোলারের মাধ্যমে ভাষা পরিবর্তন করতে পারবেন।
// src/Controller/AppController.php
public function initialize(): void
{
parent::initialize();
// সেশন থেকে ভাষা সেট করা
$lang = $this->request->getSession()->read('Config.language');
if (!$lang) {
$this->request->getSession()->write('Config.language', 'en_US');
}
// CakePHP ল্যাঙ্গুয়েজ সেটিং
Configure::write('Config.language', $lang);
}
এখানে, Config.language কনফিগারেশনটি ব্যবহারকারীর ভাষা সেশন দ্বারা নিয়ন্ত্রিত হয় এবং প্রাথমিকভাবে ইংরেজি ভাষা সেট করা হয়।
৩. ভাষা পরিবর্তন (Switching Languages)
CakePHP তে ভাষা পরিবর্তনের জন্য সাধারণত ইউজারের ভাষা নির্বাচন করার একটি ফিচার প্রদান করা হয়। কন্ট্রোলারে ভাষা পরিবর্তন করার জন্য আপনি নিচের কোডটি ব্যবহার করতে পারেন:
// src/Controller/ArticlesController.php
public function changeLanguage($lang)
{
if (in_array($lang, ['en_US', 'bn'])) {
$this->request->getSession()->write('Config.language', $lang);
Configure::write('Config.language', $lang);
}
return $this->redirect($this->referer());
}
এখানে, ব্যবহারকারী $lang প্যারামিটার দিয়ে নির্দিষ্ট ভাষা নির্বাচন করলে তা সেশনে সংরক্ষিত হবে এবং সেই অনুযায়ী কনফিগারেশন আপডেট হবে।
৪. অনুবাদ করা স্ট্রিং ব্যবহার (Using Translated Strings)
একবার আপনি ভাষার ফাইল তৈরি করে ফেললে, CakePHP তে এই অনুবাদ স্ট্রিংগুলো ব্যবহার করার জন্য __() ফাংশন ব্যবহার করা হয়।
// src/Template/Articles/index.php
<h1><?= __('Hello, world!') ?></h1>
এখানে, __('Hello, world!') ফাংশনটি default.po ফাইল থেকে অনুবাদ করবে এবং যদি ব্যবহারকারী বাংলা ভাষা নির্বাচন করে থাকে তবে তা "হ্যালো, বিশ্ব!" হিসেবে প্রদর্শিত হবে।
৫. ডেটা ফরম্যাট এবং কালচারাল কনফিগারেশন (Data Format and Cultural Configuration)
CakePHP তে i18n এর মাধ্যমে শুধু স্ট্রিং নয়, সময়, তারিখ, সংখ্যা, মুদ্রা ইত্যাদিও লোকালাইজ করা সম্ভব। এটি Number, Date এবং Time হেল্পার ব্যবহার করে করা যায়।
// তারিখ ফরম্যাট পরিবর্তন
echo $this->Number->format(1234567.89, ['locale' => 'bn_BD']); // বাংলাদেশি মুদ্রা
echo $this->Date->format('Y-m-d', '2024-12-07', 'bn_BD'); // বাংলা তারিখ ফরম্যাট
এখানে, locale প্যারামিটার দিয়ে নির্দিষ্ট ভাষা ও সংস্কৃতি সেট করা হয়েছে, যেমন বাংলা (বাংলাদেশ)।
CakePHP তে ইন্টারন্যাশনালাইজেশন (i18n) এবং লোকালাইজেশন (l10n) ফিচার ব্যবহার করে আপনি আপনার অ্যাপ্লিকেশনকে একাধিক ভাষায় কাস্টমাইজ করতে পারেন। এটি ব্যবহারকারীর ভাষা অনুযায়ী কন্টেন্ট এবং ডেটা প্রদর্শন করার সুযোগ দেয়। .po ফাইলের মাধ্যমে অনুবাদ, ভাষা সেশন এবং সাংস্কৃতিক কনফিগারেশন নিশ্চিত করতে হবে। CakePHP তে i18n এবং l10n সঠিকভাবে কনফিগার করলে আপনি একটি বৈশ্বিক অ্যাপ্লিকেশন তৈরি করতে পারবেন যা বিভিন্ন ভাষার ব্যবহারকারীদের জন্য উপযুক্ত হবে।
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 প্লাগইন ব্যবহার করতে হবে, ভাষা ফাইল তৈরি করতে হবে এবং তারপর সেগুলো কন্ট্রোলার ও ভিউতে লোড করে সঠিক ভাষায় কন্টেন্ট প্রদর্শন করতে হবে। এটি আপনার অ্যাপ্লিকেশনকে একাধিক ভাষায় কাস্টমাইজ করার এবং আন্তর্জাতিক বাজারে প্রবেশ করার সুবিধা দেয়।
CakePHP তে Locale এবং Language ফাইল ব্যবস্থাপনা একটি গুরুত্বপূর্ণ ফিচার, যা আপনার অ্যাপ্লিকেশনকে একাধিক ভাষায় কাস্টমাইজ করার জন্য ব্যবহৃত হয়। এর মাধ্যমে আপনি একই অ্যাপ্লিকেশনের বিভিন্ন ভাষার জন্য কাস্টমাইজড মেসেজ, কনটেন্ট বা ফর্ম্যাট ব্যবহার করতে পারেন। এই টিউটোরিয়ালে, আমরা CakePHP তে locale এবং language ফাইল ব্যবস্থাপনা কিভাবে করতে হয় তা বিস্তারিতভাবে দেখবো।
Locale এবং Language ফাইলের ধারণা
- Locale: এটি একটি নির্দিষ্ট ভৌগোলিক অঞ্চল বা ভাষার সংস্করণ নির্দেশ করে, যেমন
en_US(ইংরেজি - মার্কিন যুক্তরাষ্ট্র) বাfr_FR(ফরাসি - ফ্রান্স)। Locale সাধারণত ভাষা (language) এবং অঞ্চলের (region) সমন্বয়ে গঠিত। - Language ফাইল: CakePHP তে ভাষার বিশেষ মেসেজ বা ডেটা সংরক্ষণ করার জন্য ব্যবহার করা হয়। এগুলি সাধারণত
.pot,.po, বা.moফাইল হিসেবে থাকে এবং ভাষাগত কনটেন্ট সংরক্ষণে সহায়তা করে।
CakePHP তে ভাষার সমর্থন সাধারাণত i18n (internationalization) এবং l10n (localization) এর মাধ্যমে অর্জিত হয়। i18n হল একটি অ্যাপ্লিকেশনকে বহু ভাষা সমর্থনযোগ্য করার প্রক্রিয়া, এবং l10n হল ভাষা বা অঞ্চলের নির্দিষ্ট কনফিগারেশন তৈরি করার প্রক্রিয়া।
Locale সেটআপ করা
CakePHP তে Locale সেটআপ করার জন্য, আপনাকে কয়েকটি পদক্ষেপ অনুসরণ করতে হবে:
১. Language ফোল্ডার তৈরি করা
প্রথমে আপনার অ্যাপ্লিকেশনের src/Locale ডিরেক্টরির মধ্যে ভাষা ফোল্ডার তৈরি করতে হবে। প্রতিটি ভাষার জন্য একটি আলাদা ফোল্ডার তৈরি করতে হবে।
উদাহরণস্বরূপ, আপনি ইংরেজি (en) এবং বাংলা (bn) ভাষার জন্য দুটি ফোল্ডার তৈরি করতে পারেন:
/src/Locale/en_US/default.po
/src/Locale/bn_BD/default.po
২. PO ফাইল তৈরি করা
প্রতিটি ভাষার জন্য .po ফাইল তৈরি করতে হবে, যা ভাষাগত মেসেজগুলো ধারণ করবে। উদাহরণস্বরূপ, ইংরেজি এবং বাংলার জন্য দুটি PO ফাইল তৈরি করা যেতে পারে।
en_US/default.po:
msgid "Hello"
msgstr "Hello"
bn_BD/default.po:
msgid "Hello"
msgstr "হ্যালো"
এখানে msgid হল আসল টেক্সট এবং msgstr হল অনুবাদিত টেক্সট। এইভাবে, আপনি যতটা প্রয়োজন, ততটা শব্দ এবং বাক্য অনুবাদ করতে পারবেন।
৩. Language ফাইল লোড করা
CakePHP তে Locale ফাইল লোড করার জন্য, আপনি কনফিগারেশন ফাইল বা কোডে I18n ক্লাস ব্যবহার করতে পারেন।
// src/Application.php
use Cake\I18n\I18n;
public function bootstrap(): void
{
parent::bootstrap();
// ইংরেজি ভাষা লোড করা
I18n::setLocale('en_US');
// বাংলা ভাষা লোড করা
I18n::setLocale('bn_BD');
}
এভাবে আপনি অ্যাপ্লিকেশন চালু হওয়ার সময় নির্দিষ্ট ভাষা লোড করতে পারেন।
৪. ভাষা পরিবর্তন করা
কোনো ইউজার যদি ভাষা পরিবর্তন করতে চান, তাহলে আপনি সেই ভাষার locale পরিবর্তন করতে পারেন। যেমন, একটি কন্ট্রোলারে ভাষা পরিবর্তন করতে:
// src/Controller/ArticlesController.php
use Cake\I18n\I18n;
public function setLanguage($locale)
{
I18n::setLocale($locale); // Locale পরিবর্তন করা
$this->Flash->success(__('Language changed successfully.'));
return $this->redirect($this->referer());
}
এখানে $locale হতে পারে en_US, bn_BD, অথবা আপনার অ্যাপ্লিকেশনের অন্য কোনো ভাষা কোড।
Language ফাইল ব্যবস্থাপনা
CakePHP তে ভাষাগত মেসেজগুলো ম্যানেজ করতে এবং অ্যাপ্লিকেশনের সব স্থানীয়করণ বা i18n করার জন্য কিছু টুলস এবং মেথড প্রদান করা হয়েছে।
১. ভাষাগত স্ট্রিং ব্যবহার করা
CakePHP তে ভাষাগত স্ট্রিং ব্যবহার করার জন্য আপনি __() ফাংশন ব্যবহার করতে পারেন। এটি ব্যবহার করে আপনার মেসেজগুলো ভাষার উপর নির্ভর করে পরিবর্তিত হবে। উদাহরণস্বরূপ:
// src/Controller/ArticlesController.php
public function index()
{
$this->set('greeting', __('Hello')); // স্বাগত বার্তা, যা ভাষা অনুসারে পরিবর্তিত হবে
}
এখানে, __('Hello') ফাংশনটি সেই ভাষায় অনুবাদিত হবে, যেটি বর্তমানে সেট করা আছে।
২. ফর্মে ভাষাগত স্ট্রিং ব্যবহার করা
ফর্ম এবং অন্যান্য HTML উপাদানেও ভাষাগত স্ট্রিং ব্যবহার করা যেতে পারে:
// templates/Articles/add.php
<?= $this->Form->control('title', ['label' => __('Title')]); ?>
এখানে, __('Title') স্ট্রিংটি নির্দিষ্ট ভাষা অনুযায়ী অনুবাদিত হবে।
৩. কাস্টম মেসেজ তৈরি করা
আপনি কাস্টম ভাষাগত মেসেজও তৈরি করতে পারেন। যেমন:
// src/Controller/ArticlesController.php
public function add()
{
$article = $this->Articles->newEmptyEntity();
if ($this->request->is('post')) {
if ($this->Articles->save($article)) {
$this->Flash->success(__('Article has been saved successfully.'));
} else {
$this->Flash->error(__('Unable to save your article.'));
}
}
$this->set('article', $article);
}
এখানে, __('Article has been saved successfully.') এবং __('Unable to save your article.') উভয়ই ভাষার উপর নির্ভর করে পরিবর্তিত হবে।
CakePHP Locale এবং Language ফাইলের অন্যান্য ফিচার
- Pluralization: একটি ভাষায় একাধিক ফর্ম্যাটের জন্য প্লুরালাইজেশন (যেমন: একবচন এবং বহুবচন) ব্যবহারের জন্য CakePHP ফিচার প্রদান করে।
- Date/Time Formatting: আপনি
I18n::getLocale()এবংI18n::setLocale()ব্যবহার করে ডেট এবং টাইমের ফরম্যাটও নির্ধারণ করতে পারেন।
// Date format পরিবর্তন
echo $this->Time->format('yyyy-MM-dd'); // বাংলা বা ইংরেজি ফরম্যাট অনুযায়ী
- MessageCatalog: আপনি CakePHP তে MessageCatalog ব্যবহার করে আরও সূক্ষ্মভাবে ভাষাগত স্ট্রিংগুলি কাস্টমাইজ করতে পারেন।
CakePHP তে Locale এবং Language ফাইল ব্যবস্থাপনা একটি শক্তিশালী ফিচার যা অ্যাপ্লিকেশনকে একাধিক ভাষায় কাস্টমাইজ করার জন্য ব্যবহৃত হয়। আপনি Locale ফাইল তৈরি করে বিভিন্ন ভাষার জন্য মেসেজ কনফিগার করতে পারেন এবং অ্যাপ্লিকেশনের ইন্টারফেসকে ব্যবহারকারীকে আরও সহজলভ্য এবং উপযোগী করে তুলতে পারেন। i18n এবং l10n এর সাহায্যে, আপনি CakePHP তে একাধিক ভাষা সমর্থনযোগ্য এবং স্থানীয়কৃত অ্যাপ্লিকেশন তৈরি করতে পারবেন।
CakePHP তে multi-language অ্যাপ্লিকেশন তৈরি করা একটি খুবই সুবিধাজনক এবং গুরুত্বপূর্ণ বৈশিষ্ট্য, যা বিভিন্ন ভাষায় ওয়েব অ্যাপ্লিকেশন প্রদান করতে সাহায্য করে। এটি বিশেষত আন্তর্জাতিকিকরণ (i18n) এবং স্থানীয়করণ (l10n) এর জন্য ব্যবহার করা হয়, যাতে ব্যবহারকারীরা তাদের পছন্দের ভাষায় অ্যাপ্লিকেশন ব্যবহার করতে পারে। CakePHP তে এটি সহজভাবে বাস্তবায়ন করা যায়।
এই গাইডে, আমরা দেখব কীভাবে CakePHP তে একটি multi-language অ্যাপ্লিকেশন তৈরি করা যায় এবং বিভিন্ন ভাষায় কনটেন্ট প্রদর্শন করা যায়।
CakePHP তে Multi-language অ্যাপ্লিকেশন কনফিগারেশন
CakePHP তে multi-language ফিচারটি i18n (internationalization) এবং l10n (localization) এর মাধ্যমে পরিচালিত হয়। এখানে কিছু গুরুত্বপূর্ণ ধাপ দেয়া হলো, যেগুলোর মাধ্যমে আপনি multi-language অ্যাপ্লিকেশন তৈরি করতে পারবেন।
১. CakePHP তে ভাষা কনফিগার করা
প্রথমে, CakePHP তে ভাষার কনফিগারেশন করতে হবে। এটি করতে, আপনাকে config/app.php ফাইলে কিছু সেটিংস যোগ করতে হবে।
// config/app.php
'App' => [
'defaultLocale' => 'en_US', // ডিফল্ট ভাষা (এখানে ইংরেজি)
'supportedLocales' => ['en_US', 'fr_FR', 'es_ES'], // সমর্থিত ভাষা তালিকা
],
এখানে:
defaultLocale: অ্যাপ্লিকেশনের ডিফল্ট ভাষা সেট করা হয়েছে, যেমনen_US(ইংরেজি)।supportedLocales: যে ভাষাগুলো আপনার অ্যাপ্লিকেশন সমর্থন করবে, তাদের তালিকা এখানে দেয়া হয়েছে।
২. ভাষার ফাইল তৈরি করা
CakePHP তে ভাষা ফাইলগুলি src/Locale ডিরেক্টরির মধ্যে রাখা হয়। এখানে আপনার অ্যাপ্লিকেশনের জন্য বিভিন্ন ভাষার কনটেন্ট সংরক্ষিত থাকবে।
আপনার ভাষা ফাইল তৈরি করতে হলে, প্রথমে src/Locale ডিরেক্টরি তৈরি করুন, এবং এরপর ভাষা অনুযায়ী ফাইল তৈরি করুন।
উদাহরণস্বরূপ, ইংরেজি (en_US) এবং ফরাসি (fr_FR) ভাষার জন্য ফাইল তৈরি করা যেতে পারে:
src/Locale/en_US/default.po
src/Locale/fr_FR/default.po
এখানে:
- default.po ফাইলটি ভাষার কনটেন্ট ধারণ করে, যেমন সঠিক টেক্সট বা স্ট্রিং।
৩. ভাষা ফাইলের কনটেন্ট
.po ফাইলগুলো ভাষার কনটেন্ট থাকে, যা আপনাকে অনুবাদ করতে হবে। নিচে একটি উদাহরণ দেয়া হলো:
# src/Locale/en_US/default.po
msgid "Hello, World!"
msgstr "Hello, World!" // ইংরেজি টেক্সট
# src/Locale/fr_FR/default.po
msgid "Hello, World!"
msgstr "Bonjour le monde!" // ফরাসি অনুবাদ
এখানে:
- msgid: এই টেক্সটটি অ্যাপ্লিকেশনে দেখা যাবে।
- msgstr: এই টেক্সটটি অনুবাদ করা ভাষায় দেখানো হবে।
৪. ভাষার ফাইল কম্পাইল করা
CakePHP তে .po ফাইলগুলি কম্পাইল করার জন্য আপনাকে msgfmt টুল ব্যবহার করতে হবে, যা .mo ফাইল তৈরি করবে। এই .mo ফাইলগুলি অ্যাপ্লিকেশন লোড করতে হবে।
msgfmt src/Locale/en_US/default.po --output-file=src/Locale/en_US/default.mo
msgfmt src/Locale/fr_FR/default.po --output-file=src/Locale/fr_FR/default.mo
এইভাবে, .po ফাইলগুলিকে .mo ফাইলে রূপান্তরিত করতে হবে।
CakePHP তে ভাষা পরিবর্তন করার পদ্ধতি
CakePHP তে ভাষা পরিবর্তন করতে, আপনি কনট্রোলার বা ভিউ ফাইলের মাধ্যমে ব্যবহারকারীর পছন্দ অনুযায়ী ভাষা সেট করতে পারেন।
১. ভাষা পরিবর্তন কন্ট্রোলার থেকে
ব্যবহারকারী যদি ভাষা পরিবর্তন করতে চান, তাহলে কন্ট্রোলারের মাধ্যমে তা করা যেতে পারে। উদাহরণস্বরূপ:
// src/Controller/LanguageController.php
namespace App\Controller;
use App\Controller\AppController;
class LanguageController extends AppController
{
public function change($lang)
{
// ভাষা পরিবর্তন করা
if (in_array($lang, ['en_US', 'fr_FR', 'es_ES'])) {
$this->request->getSession()->write('Config.language', $lang);
}
return $this->redirect($this->referer()); // পূর্ববর্তী পেজে রিডাইরেক্ট
}
}
এখানে:
- ভাষা পরিবর্তন করার জন্য, আমরা
Config.languageসেশন কীগুলি ব্যবহার করেছি। $this->referer()ব্যবহার করে, ব্যবহারকারী যেখানে ছিল সেখানে রিডাইরেক্ট করা হচ্ছে।
২. ভাষা পরিবর্তন লিংক তৈরি করা
ভাষা পরিবর্তনের জন্য একটি লিংক তৈরি করা যেতে পারে। ধরুন, আপনি ভিউ ফাইলে একটি ড্রপডাউন বা লিংক দিয়ে ভাষা পরিবর্তন করতে চান:
// templates/Articles/index.php
<h1>Articles List</h1>
<!-- ভাষা পরিবর্তনের জন্য লিংক -->
<a href="/language/change/en_US">English</a> |
<a href="/language/change/fr_FR">Français</a>
এখানে:
- আপনি ভিউ ফাইলে একটি লিংক তৈরি করেছেন, যেখানে ব্যবহারকারী ভাষা পরিবর্তন করতে পারেন।
CakePHP তে ভাষা টেক্সট ব্যবহার করা
CakePHP তে ভাষা টেক্সট ব্যবহার করতে, আপনি __() ফাংশনটি ব্যবহার করতে পারেন। এটি আপনার অ্যাপ্লিকেশনে ভাষার অনুবাদ প্রদর্শন করবে।
১. ভাষা টেক্সট প্রদর্শন করা
ভিউ ফাইলে, আপনি __() ফাংশন ব্যবহার করে ভাষার টেক্সট প্রদর্শন করতে পারেন:
// templates/Articles/index.php
<h1><?= __('Hello, World!') ?></h1>
এখানে:
__('Hello, World!')এই স্ট্রিংটি অনুবাদ করবে যদি.poফাইলগুলিতে সেই ভাষার অনুবাদ থাকে।
২. কন্ট্রোলারে ভাষা টেক্সট ব্যবহার করা
কন্ট্রোলারেও আপনি ভাষার টেক্সট ব্যবহার করতে পারেন:
// src/Controller/ArticlesController.php
public function index()
{
$this->set('message', __('Hello, World!'));
}
এখানে:
__('Hello, World!')কন্ট্রোলারে ভাষার টেক্সট অনুবাদ করবে এবংset()ফাংশনের মাধ্যমে ভিউতে পাঠাবে।
CakePHP তে multi-language অ্যাপ্লিকেশন তৈরি করা খুবই সহজ এবং কার্যকরী। আপনি i18n এবং l10n ফিচারের মাধ্যমে বিভিন্ন ভাষায় কনটেন্ট প্রদান করতে পারেন। ভাষার ফাইল তৈরি করা, সেগুলি .po এবং .mo ফরম্যাটে রূপান্তর করা, এবং ভাষা পরিবর্তন করার জন্য সেশন ব্যবহারের মাধ্যমে একাধিক ভাষায় অ্যাপ্লিকেশন পরিচালনা করা সম্ভব। __() ফাংশন ব্যবহার করে আপনি ভাষার টেক্সট পরিবর্তন করতে পারেন, যা আপনার অ্যাপ্লিকেশনকে আন্তর্জাতিককরণ এবং স্থানীয়করণে সক্ষম করে তোলে।
CakePHP তে বিভিন্ন ধরনের কনফিগারেশন, যেমন ক্যালেন্ডার এবং মুদ্রা ফরম্যাটের কাস্টমাইজেশন, সহজেই করা যায়। এ ধরনের কনফিগারেশন ব্যবহারকারীকে তাদের লোকালাইজড ডেটা প্রদান করার জন্য অপরিহার্য। এই টিউটোরিয়ালে আমরা কেকপিএইচপি তে Currency এবং Date Format কনফিগারেশন কীভাবে করা যায়, তা আলোচনা করবো।
১. Currency ফরম্যাট কনফিগারেশন
CakePHP তে মুদ্রা ফরম্যাট কনফিগারেশন ব্যবহারের মাধ্যমে আপনি বিভিন্ন দেশ বা অঞ্চলের মুদ্রা সিম্বল এবং ডেটা ফরম্যাট সঠিকভাবে প্রদর্শন করতে পারবেন।
১.১. মুদ্রা ফরম্যাট প্রদর্শন
CakePHP তে NumberHelper ব্যবহার করে মুদ্রা প্রদর্শন করা সম্ভব। উদাহরণস্বরূপ:
<?= $this->Number->currency($price, 'USD') ?>
এখানে:
$price: যে দামটি আপনি প্রদর্শন করতে চান।'USD': এখানে মুদ্রা সিম্বলটি দেওয়া হয়েছে, যেমনUSD,INR,EURইত্যাদি।
১.২. মুদ্রা কনফিগারেশন পরিবর্তন
CakePHP এর কনফিগারেশন ফাইলে config/app.php মুদ্রা ফরম্যাটের জন্য কাস্টম সেটিংস তৈরি করা যেতে পারে। আপনি যদি আপনার অ্যাপ্লিকেশনে ডিফল্ট মুদ্রা পরিবর্তন করতে চান, তাহলে নিচের মতো সেটিংস ব্যবহার করতে পারেন:
'Currency' => [
'default' => 'USD', // ডিফল্ট মুদ্রা সিম্বল
'allowed' => ['USD', 'INR', 'EUR'], // অনুমোদিত মুদ্রা সিম্বল
],
এই কনফিগারেশনটি মুদ্রা সিলেকশন এবং কাস্টম ফরম্যাটিং করতে সহায়তা করবে।
১.৩. কাস্টম মুদ্রা ফরম্যাট
কেকপিএইচপি আপনাকে বিভিন্ন কাস্টম মুদ্রা ফরম্যাটও সেট করতে দেয়। নিচে একটি কাস্টম মুদ্রা ফরম্যাট প্রদর্শনের উদাহরণ দেওয়া হল:
<?= $this->Number->format($price, [
'before' => '$', // মুদ্রা সিম্বল আগে
'thousands' => ',', // হাজারের সেপারেটর
'decimals' => 2 // দশমিকের পর ২টি ডিজিট
]) ?>
এখানে:
'before' => '$': মুদ্রা সিম্বল হিসেবে$ব্যবহার করা হয়েছে।'thousands' => ',': হাজারের সংখ্যা সেপারেটর হিসেবে কমা ব্যবহার করা হয়েছে।'decimals' => 2: দশমিকের পর ২টি ডিজিট।
২. Date Format কনফিগারেশন
CakePHP তে তারিখ এবং সময় ফরম্যাট কাস্টমাইজেশন খুব সহজ। সাধারণত, CakePHP DateHelper ব্যবহার করে তারিখের ফরম্যাট কনফিগার করা হয়।
২.১. ডিফল্ট তারিখ ফরম্যাট
CakePHP তে তারিখ ফরম্যাট করার জন্য DateHelper ব্যবহার করা হয়। নিচে একটি সাধারণ তারিখ প্রদর্শনের উদাহরণ দেওয়া হলো:
<?= $this->Time->format($date, 'dd/MM/yyyy') ?>
এখানে:
$date: যে তারিখটি আপনি প্রদর্শন করতে চান।'dd/MM/yyyy': এটি তারিখের ফরম্যাট, যেমনডে/মাস/বছর।
২.২. কাস্টম ডেট ফরম্যাট কনফিগারেশন
CakePHP তে ডেটার জন্য কাস্টম ফরম্যাট সেট করতে হলে, config/app.php ফাইলে ডেট ফরম্যাট কনফিগারেশন করা যেতে পারে।
'App' => [
'dateFormat' => 'yyyy-MM-dd', // ডিফল্ট তারিখ ফরম্যাট
'timeFormat' => 'HH:mm:ss', // ডিফল্ট সময় ফরম্যাট
],
এখানে:
'dateFormat' => 'yyyy-MM-dd': ডিফল্ট তারিখ ফরম্যাট হিসেবেবছর-মাস-দিনসেট করা হয়েছে।'timeFormat' => 'HH:mm:ss': ডিফল্ট সময় ফরম্যাট হিসেবেঘণ্টা:মিনিট:সেকেন্ডসেট করা হয়েছে।
২.৩. তারিখ ও সময় প্রদর্শন
CakePHP তে তারিখ এবং সময় প্রদর্শন করতে TimeHelper ব্যবহার করা হয়। নিচে কিছু উদাহরণ দেওয়া হলো:
<?= $this->Time->format('2024-12-07 15:30:00', 'dd/MM/yyyy HH:mm') ?>
এখানে:
'dd/MM/yyyy HH:mm': এটি তারিখ এবং সময়ের ফরম্যাট, যেমন07/12/2024 15:30।
২.৪. লোকালাইজড তারিখ এবং সময় ফরম্যাট
আপনি যদি বিভিন্ন ভাষায় তারিখ এবং সময় ফরম্যাট ব্যবহার করতে চান, তবে CakePHP তে লোকালাইজেশন সুবিধা রয়েছে। এর মাধ্যমে আপনি স্থানীয় ভাষা এবং সংস্কৃতির ভিত্তিতে তারিখ এবং সময় প্রদর্শন করতে পারেন।
<?= $this->Time->format('2024-12-07 15:30:00', 'LLLL', ['locale' => 'fr_FR']) ?>
এখানে:
'LLLL': এটি পূর্ণ তারিখ এবং সময় ফরম্যাট, যেমনdimanche 7 décembre 2024 15:30.'locale' => 'fr_FR': এটি ফ্রেঞ্চ (ফ্রান্স) লোকাল ব্যবহার করতে সাহায্য করবে।
৩. Timezone কনফিগারেশন
CakePHP তে আপনি timezone কনফিগারেশনও পরিবর্তন করতে পারেন। এর মাধ্যমে আপনি ডেটা সময় অনুযায়ী ফরম্যাট বা কাজ করতে পারবেন।
৩.১. ডিফল্ট টাইমজোন কনফিগারেশন
'App' => [
'defaultTimezone' => 'Asia/Dhaka', // ডিফল্ট টাইমজোন সেট করা হচ্ছে
],
এখানে 'Asia/Dhaka' টাইমজোন সেট করা হয়েছে, তবে আপনি অন্যান্য টাইমজোন যেমন 'America/New_York', 'Europe/London' ব্যবহার করতে পারেন।
CakePHP তে Currency এবং Date Format কনফিগারেশন করা অত্যন্ত সহজ। CakePHP এর NumberHelper এবং TimeHelper এর মাধ্যমে আপনি মুদ্রা এবং তারিখের ফরম্যাট কাস্টমাইজ করতে পারেন, যা ব্যবহারকারীর প্রয়োজন অনুযায়ী লোকালাইজড ফরম্যাট প্রদর্শন করার জন্য সহায়ক। কনফিগারেশন ফাইল app.php তে মুদ্রা, তারিখ, সময় এবং টাইমজোন কাস্টমাইজেশন করাও সম্ভব। এই ধরনের কনফিগারেশন কাস্টম অ্যাপ্লিকেশনের জন্য একটি উন্নত এবং সুনির্দিষ্ট ব্যবহারকারীর অভিজ্ঞতা নিশ্চিত করে।
Read more