Zend Framework (এখন Laminas) আন্তর্জাতিককরণ (Internationalization, i18n) এবং স্থানীয়করণ (Localization, l10n) সমর্থন প্রদান করে, যা আপনার অ্যাপ্লিকেশনকে বিভিন্ন ভাষা এবং আঞ্চলিক সেটিংসের সাথে সামঞ্জস্যপূর্ণ করে তোলে। এই দুটি প্রক্রিয়া গুরুত্বপূর্ণ, কারণ এগুলি ইউজারদের স্থানীয় ভাষা এবং সংস্কৃতির সাথে অ্যাপ্লিকেশনটি মানিয়ে নিতে সহায়তা করে।
Internationalization (i18n) কী?
Internationalization (i18n) হল এমন একটি প্রক্রিয়া, যার মাধ্যমে সফটওয়্যার বা ওয়েব অ্যাপ্লিকেশনটি এমনভাবে ডিজাইন করা হয়, যাতে এটি একাধিক ভাষা এবং আঞ্চলিক সেটিংস সমর্থন করতে পারে। এটি সাধারণত অ্যাপ্লিকেশনটির কোর ফিচারের সাথে সম্পর্কিত, যেখানে ভাষার পরিবর্তন এবং আঞ্চলিক কাস্টমাইজেশন সহজভাবে ইমপ্লিমেন্ট করা হয়।
Zend Framework এ, i18n সাধারণত স্ট্রিং অনুবাদ, তারিখ এবং সময়ের ফরম্যাটিং, সংখ্যার ফরম্যাটিং ইত্যাদি সমর্থন করতে ব্যবহৃত হয়।
Localization (l10n) কী?
Localization (l10n) হল আন্তর্জাতিককরণের পরবর্তী ধাপ, যা একাধিক ভাষা এবং আঞ্চলিক সেটিংসের জন্য অ্যাপ্লিকেশনটি কাস্টমাইজ বা স্থানীয়করণ করে। এর মধ্যে ভাষা, সময়, তারিখ, মুদ্রা এবং সংখ্যা ফরম্যাটিংসহ অন্যান্য স্থানীয় সংস্কৃতি-ভিত্তিক ফিচারের সঠিক রূপান্তর অন্তর্ভুক্ত থাকে।
Zend Framework এ, l10n হল সেই প্রক্রিয়া যা ভাষা, সময়, তারিখ, এবং নম্বরের স্থানীয় ফরম্যাটে রূপান্তর করে।
Zend Framework এ i18n এবং l10n সেটআপ
Zend Framework এ i18n এবং l10n ব্যবহারের জন্য সাধারণত Zend\I18n এবং Zend\Translator কম্পোনেন্ট ব্যবহার করা হয়। এই দুটি কম্পোনেন্ট অ্যাপ্লিকেশনে বিভিন্ন ভাষার অনুবাদ এবং আঞ্চলিক সেটিংস সমর্থন করতে সহায়তা করে।
১. Zend\I18n এবং Zend\Translator কম্পোনেন্ট ইন্সটল করা
প্রথমে আপনাকে Zend\I18n এবং Zend\Translator কম্পোনেন্ট ইন্সটল করতে হবে। Composer ব্যবহার করে কম্পোনেন্টগুলো ইন্সটল করা যায়:
composer require zendframework/zend-i18n
composer require zendframework/zend-translator
২. ভাষার ফাইল তৈরি
Zend Framework এ i18n এবং l10n এর জন্য ভাষা ফাইল তৈরি করতে হয়, যা সাধারণত .php ফরম্যাটে থাকে। এই ফাইলগুলো বিভিন্ন ভাষার জন্য অনুবাদ সরবরাহ করে।
ফোল্ডার স্ট্রাকচার:
module/Application/language/en_US/messages.php
module/Application/language/bn_BD/messages.php
messages.php (en_US):
<?php
return [
'hello_world' => 'Hello, World!',
'welcome_message' => 'Welcome to our website!',
];
messages.php (bn_BD):
<?php
return [
'hello_world' => 'হ্যালো, ওয়ার্ল্ড!',
'welcome_message' => 'আমাদের ওয়েবসাইটে আপনাকে স্বাগতম!',
];
এখানে messages.php ফাইলটি ইংরেজি এবং বাংলা ভাষার জন্য তৈরি করা হয়েছে, যেখানে অনুবাদ স্ট্রিং সংরক্ষিত থাকে।
৩. Translator এবং I18n সার্ভিস কনফিগার করা
Zend\Translator এবং Zend\I18n কম্পোনেন্টের জন্য সার্ভিস কনফিগারেশন করতে হবে, যাতে অ্যাপ্লিকেশন সঠিকভাবে ভাষা এবং অনুবাদ পরিচালনা করতে পারে।
module.config.php:
<?php
namespace Application;
return [
'translator' => [
'locale' => 'en_US', // প্রাথমিক ভাষা
'translation_file_patterns' => [
[
'type' => 'phpArray',
'base_dir' => __DIR__ . '/../language',
'pattern' => '%s/messages.php',
],
],
],
];
এখানে, locale সেট করা হয়েছে en_US, এবং অনুবাদ ফাইলের অবস্থান ও প্যাটার্ন কনফিগার করা হয়েছে।
৪. কন্ট্রোলারে ভাষা পরিবর্তন
আপনি কন্ট্রোলারের মধ্যে ভাষা পরিবর্তন করতে পারেন, যাতে ইউজার তাদের পছন্দের ভাষায় অ্যাপ্লিকেশনটি দেখতে পারে। Zend\I18n\Translator\Translator সার্ভিস ব্যবহার করে ভাষা পরিবর্তন করা যেতে পারে।
IndexController.php:
<?php
namespace Application\Controller;
use Laminas\Mvc\Controller\AbstractActionController;
use Laminas\View\Model\ViewModel;
class IndexController extends AbstractActionController
{
public function indexAction()
{
// Translator সার্ভিসের মাধ্যমে ভাষা পরিবর্তন
$translator = $this->getServiceLocator()->get('translator');
$translator->setLocale('bn_BD'); // বাংলা ভাষা সেট করা হচ্ছে
return new ViewModel();
}
}
এখানে, কন্ট্রোলারে translator সার্ভিসটি ব্যবহার করে ভাষা পরিবর্তন করা হচ্ছে। setLocale('bn_BD') দিয়ে বাংলা ভাষায় সুইচ করা হচ্ছে।
৫. ভিউতে অনুবাদ ব্যবহার
আপনি ভিউ টেমপ্লেটেও অনুবাদ ব্যবহার করতে পারেন। Zend Framework এর Zend\View\Helper\Translate হেল্পার ব্যবহার করে এটি করা সম্ভব।
index.phtml:
<h1><?php echo $this->translate('hello_world'); ?></h1>
<p><?php echo $this->translate('welcome_message'); ?></p>
এখানে, translate হেল্পার ব্যবহার করে অনুবাদ স্ট্রিং অ্যাক্সেস করা হচ্ছে। যদি ভাষা বাংলা হয়, তাহলে এটি বাংলা অনুবাদ দেখাবে, আর ইংরেজি ভাষায় এটি ইংরেজি অনুবাদ দেখাবে।
৬. তারিখ, সময় এবং সংখ্যা ফরম্যাটিং
Zend Framework এ Zend\I18n\View\Helper\DateFormat এবং Zend\I18n\View\Helper\NumberFormat হেল্পার ব্যবহার করে তারিখ, সময়, এবং সংখ্যা ফরম্যাটিং করা যায়।
DateFormat উদাহরণ:
<?php
$date = new \DateTime('now');
echo $this->dateFormat($date, 'short');
এখানে, dateFormat হেল্পার ব্যবহার করে স্থানীয় তারিখ ফরম্যাটিং করা হচ্ছে।
NumberFormat উদাহরণ:
<?php
$number = 1234567.89;
echo $this->numberFormat($number);
এখানে, numberFormat হেল্পার ব্যবহার করে স্থানীয় সংখ্যা ফরম্যাটিং করা হচ্ছে।
সারাংশ
Zend Framework (Laminas) এ Internationalization (i18n) এবং Localization (l10n) সফটওয়্যার অ্যাপ্লিকেশনকে একাধিক ভাষা এবং আঞ্চলিক কাস্টমাইজেশনের সাথে সামঞ্জস্যপূর্ণ করতে সহায়তা করে। i18n এবং l10n ব্যবহারের জন্য Zend\I18n এবং Zend\Translator কম্পোনেন্ট ব্যবহার করা হয়, যা ভাষা ফাইল, অনুবাদ, তারিখ, সময় এবং সংখ্যা ফরম্যাটিং পরিচালনা করতে সাহায্য করে। এর মাধ্যমে, আপনি সহজে আপনার অ্যাপ্লিকেশনকে বিশ্বব্যাপী ইউজারদের জন্য উপযোগী করতে পারেন।
Zend Framework (এখন Laminas) একটি শক্তিশালী PHP ফ্রেমওয়ার্ক, এবং Zend\I18n মডিউলটি আন্তর্জাতিককরণের (i18n) জন্য ব্যবহৃত হয়। এর মাধ্যমে আপনি আপনার অ্যাপ্লিকেশনে ভাষার সাপোর্ট যোগ করতে পারেন, যাতে বিভিন্ন ভাষায় ব্যবহারকারীদের জন্য কনটেন্ট প্রদর্শন করা যায়।
এই টিউটোরিয়ালে আমরা দেখবো কিভাবে Zend\I18n মডিউল ব্যবহার করে ভাষার সাপোর্ট অ্যাপ্লিকেশনে যোগ করা যায় এবং কিভাবে ভাষা পরিবর্তন করতে হয়।
১. Zend\I18n মডিউল ইনস্টলেশন
প্রথমে আপনাকে Zend\I18n মডিউলটি আপনার প্রজেক্টে ইনস্টল করতে হবে। আপনি এটি Composer ব্যবহার করে ইনস্টল করতে পারেন:
composer require laminas/laminas-i18n
এটি আপনার প্রজেক্টে Zend\I18n প্যাকেজটি যুক্ত করবে, যা আপনি ভাষার সাপোর্ট যোগ করতে ব্যবহার করতে পারবেন।
২. ভাষার সাপোর্ট কনফিগারেশন
Zend Framework বা Laminas এর মধ্যে ভাষার সাপোর্ট কনফিগারেশন করার জন্য আপনাকে প্রথমে আপনার কনফিগারেশন ফাইলে ভাষার কোডগুলি এবং লোকেল সেট করতে হবে।
module.config.php ফাইলে নিম্নলিখিত কনফিগারেশনটি যোগ করুন:
namespace Application;
use Laminas\I18n\Translator\Translator;
use Laminas\Mvc\I18n\TranslatorFactory;
return [
'translator' => [
'locale' => 'en_US', // প্রথম ভাষা (locale)
'translation_files' => [
'en_US' => __DIR__ . '/../language/en_US.php', // ইংরেজি ভাষার ফাইল
'bn_BD' => __DIR__ . '/../language/bn_BD.php', // বাংলা ভাষার ফাইল
],
],
];
এখানে:
- locale: প্রথমে কোন ভাষা ডিফল্ট হিসেবে থাকবে তা নির্ধারণ করে। উদাহরণস্বরূপ,
en_US(ইংরেজি) বাbn_BD(বাংলা)। - translation_files: ভাষার কনটেন্ট ফাইলগুলোর পথ উল্লেখ করা হয়। এখানে
en_US.phpএবংbn_BD.phpনামক দুটি ফাইলের উদাহরণ দেয়া হয়েছে, যা প্রতিটি ভাষার জন্য কনফিগার করা যাবে।
৩. ভাষা ফাইল তৈরি করা
আপনার অ্যাপ্লিকেশনে ভাষা সাপোর্ট যোগ করার জন্য translation files তৈরি করতে হবে। এই ফাইলগুলোতে আপনি ভাষা-ভিত্তিক কনটেন্ট স্টোর করবেন।
উদাহরণস্বরূপ, en_US.php (ইংরেজি) এবং bn_BD.php (বাংলা) ফাইল তৈরি করা যেতে পারে।
en_US.php (ইংরেজি ভাষার ফাইল):
return [
'greeting' => 'Hello, welcome to our application!',
'thank_you' => 'Thank you for using our app.',
];
bn_BD.php (বাংলা ভাষার ফাইল):
return [
'greeting' => 'হ্যালো, আমাদের অ্যাপ্লিকেশনে স্বাগতম!',
'thank_you' => 'আমাদের অ্যাপ ব্যবহার করার জন্য ধন্যবাদ।',
];
এই ফাইলগুলো ভাষার কনটেন্ট ধারণ করবে, যেগুলো পরে আপনার অ্যাপ্লিকেশনের বিভিন্ন জায়গায় ব্যবহার করা হবে।
৪. ভাষা পরিবর্তন
Zend Framework এ ভাষা পরিবর্তন করতে Translator ক্লাস ব্যবহার করা হয়। এটি ব্যবহার করে আপনি ব্যবহারকারীর ভাষা সেট করতে পারবেন এবং ঐ ভাষার কনটেন্ট অ্যাপ্লিকেশনে প্রদর্শন করতে পারবেন।
Controller এ ভাষা পরিবর্তন
আপনার কন্ট্রোলারে ভাষা পরিবর্তন করার জন্য নিচের মতো কোড ব্যবহার করতে পারেন:
namespace Application\Controller;
use Laminas\Mvc\Controller\AbstractActionController;
use Laminas\View\Model\ViewModel;
use Laminas\I18n\Translator\Translator;
class IndexController extends AbstractActionController
{
protected $translator;
public function __construct(Translator $translator)
{
$this->translator = $translator;
}
public function indexAction()
{
// ভাষা পরিবর্তন করা
$this->translator->setLocale('bn_BD'); // বাংলা ভাষা সেট করা
return new ViewModel([
'greeting' => $this->translator->translate('greeting'),
'thank_you' => $this->translator->translate('thank_you')
]);
}
}
এখানে, setLocale('bn_BD') এর মাধ্যমে বাংলা ভাষা সেট করা হয়েছে, এবং translate() মেথডের মাধ্যমে নির্দিষ্ট কনটেন্ট ট্রান্সলেট করা হচ্ছে।
৫. ভাষা পরিবর্তনের জন্য রাউটিং ব্যবহার করা
আপনি চাইলে রাউটিংয়ের মাধ্যমেও ভাষা পরিবর্তন করতে পারেন। উদাহরণস্বরূপ, একটি রাউট তৈরি করে ব্যবহারকারীর ভাষা পরিবর্তন করতে পারবেন।
module.config.php ফাইলে রাউট কনফিগারেশন:
return [
'router' => [
'routes' => [
'change-language' => [
'type' => 'Literal',
'options' => [
'route' => '/language[/:lang]',
'defaults' => [
'controller' => 'Application\Controller\Language',
'action' => 'changeLanguage',
],
],
],
],
],
];
এখন, LanguageController এ ভাষা পরিবর্তনের জন্য লজিক যোগ করা হবে।
LanguageController.php:
namespace Application\Controller;
use Laminas\Mvc\Controller\AbstractActionController;
use Laminas\I18n\Translator\Translator;
use Laminas\View\Model\ViewModel;
class LanguageController extends AbstractActionController
{
protected $translator;
public function __construct(Translator $translator)
{
$this->translator = $translator;
}
public function changeLanguageAction()
{
$lang = $this->params()->fromRoute('lang', 'en_US'); // ডিফল্ট ভাষা ইংরেজি
$this->translator->setLocale($lang);
// তারপর, অ্যাপ্লিকেশন লোড করতে ViewModel রিটার্ন করা
return new ViewModel();
}
}
এখানে, URL এর মাধ্যমে ভাষা পরিবর্তন করা হচ্ছে (যেমন /language/bn_BD ইংরেজির বদলে বাংলা ভাষা সেট করতে পারে)।
৬. Zend\I18n এর সাথে ফর্ম এর ভাষার সাপোর্ট
Zend Framework এ ফর্মগুলির ভাষা সাপোর্ট যোগ করতে হলে, আপনাকে ফর্ম এর লেবেল, এরর মেসেজ ইত্যাদির জন্য Translator ব্যবহার করতে হবে। উদাহরণস্বরূপ:
$form = new SomeForm();
$form->setTranslator($translator); // ফর্মে ট্রান্সলেটর সেট করা
$form->setAttribute('action', '/submit');
$form->setMethod('post');
এখন ফর্মের লেবেল এবং এরর মেসেজগুলো আপনার নির্দিষ্ট ভাষায় প্রদর্শিত হবে।
সারাংশ
Zend\I18n মডিউল ব্যবহার করে Zend Framework (এখন Laminas) এ ভাষার সাপোর্ট যোগ করা সহজ। আপনি locale এবং translation files কনফিগার করে বিভিন্ন ভাষায় কনটেন্ট প্রদর্শন করতে পারেন। এর মাধ্যমে অ্যাপ্লিকেশনটির আন্তর্জাতিককরণ সহজ হয় এবং ব্যবহারকারীদের ভাষা অনুসারে কনটেন্ট প্রদর্শন করা যায়। ভাষা পরিবর্তন করতে Translator ক্লাস ব্যবহার করা হয়, এবং রাউটিং বা কন্ট্রোলারের মাধ্যমে ব্যবহারকারী ভাষা পরিবর্তন করতে পারেন।
Zend Framework (এখন Laminas) একটি আন্তর্জাতিককরণের (i18n) সমাধান প্রদান করে, যার মাধ্যমে আপনি আপনার অ্যাপ্লিকেশনকে বিভিন্ন ভাষায় অনুবাদ (translation) করতে পারেন। এটি বিশেষত Zend\I18n এবং Zend\Translator কম্পোনেন্ট ব্যবহার করে, যা ভাষার ওপর নির্ভরশীল তথ্য প্রদর্শন করতে সাহায্য করে। এই গাইডে আমরা দেখব কিভাবে ট্রান্সলেশন ফাইল তৈরি এবং ব্যবহার করতে হয়।
১. ট্রান্সলেশন ফাইল তৈরি করা
Zend Framework এ ট্রান্সলেশন ফাইল সাধারণত .po (Portable Object) বা .mo (Machine Object) ফরম্যাটে তৈরি হয়। তবে, আপনি যদি সাধারণ PHP অ্যারে বা JSON ফাইল ব্যবহার করতে চান, তবে সেগুলোও সমর্থিত।
.po ফাইল তৈরি:
ধরা যাক, আপনি ইংরেজি এবং বাংলা ভাষার জন্য ট্রান্সলেশন তৈরি করতে চান। প্রথমে একটি language ফোল্ডার তৈরি করুন, তারপর এতে পৃথক পৃথক .po ফাইল রাখতে হবে।
/module
/Application
/languages
/en_US.po
/bn_BD.po
en_US.po (ইংরেজি):
msgid "Welcome"
msgstr "Welcome"
msgid "Hello, User!"
msgstr "Hello, User!"
bn_BD.po (বাংলা):
msgid "Welcome"
msgstr "স্বাগত"
msgid "Hello, User!"
msgstr "হ্যালো, ব্যবহারকারী!"
এই .po ফাইলগুলি আপনার অ্যাপ্লিকেশনের ভাষার নির্দিষ্ট কনটেক্সটে ব্যবহৃত হবে।
২. Zend\Translator ব্যবহার করে ট্রান্সলেশন লোড করা
Zend\Translator কম্পোনেন্ট ব্যবহার করে আপনি ট্রান্সলেশন ফাইলগুলো লোড করতে পারেন। প্রথমে, আপনি আপনার অ্যাপ্লিকেশনের module.config.php ফাইলে ট্রান্সলেশন সার্ভিস রেজিস্টার করবেন।
সার্ভিস কনফিগারেশন (module.config.php):
namespace Application;
use Laminas\I18n\Translator\Translator;
use Laminas\I18n\Translator\TranslationFile;
use Laminas\Mvc\ModuleRouteListener;
use Laminas\Mvc\MvcEvent;
class Module
{
public function getServiceConfig()
{
return [
'factories' => [
Translator::class => function($container) {
$translator = new Translator();
$translator->addTranslationFile(
'phpArray', // ফাইলের ধরন (এখানে PHP অ্যারে)
__DIR__ . '/../languages/en_US.php' // ইংরেজি ফাইল
);
$translator->addTranslationFile(
'phpArray',
__DIR__ . '/../languages/bn_BD.php' // বাংলা ফাইল
);
return $translator;
},
],
];
}
}
এখানে, addTranslationFile মেথডটি ব্যবহার করে আমরা ইংরেজি এবং বাংলা ট্রান্সলেশন ফাইল যুক্ত করেছি।
৩. ট্রান্সলেশন ফাইলের কনফিগারেশন (PHP অ্যারে)
আপনি চাইলে PHP অ্যারে ফরম্যাটেও ট্রান্সলেশন ফাইল তৈরি করতে পারেন। এটি .po ফাইলের তুলনায় কিছুটা বেশি সহজ এবং সরাসরি PHP কোডে ইমপোর্ট করা যায়।
en_US.php (ইংরেজি):
return [
'Welcome' => 'Welcome',
'Hello, User!' => 'Hello, User!',
];
bn_BD.php (বাংলা):
return [
'Welcome' => 'স্বাগত',
'Hello, User!' => 'হ্যালো, ব্যবহারকারী!',
];
এই ফাইলগুলি Translator ক্লাসে ইনক্লুড করা হয় এবং ভাষা অনুসারে ট্রান্সলেশন দেওয়া হয়।
৪. ট্রান্সলেশন ব্যবহার করা
এখন, আপনি যেকোনো পৃষ্ঠায় বা কন্ট্রোলারে ট্রান্সলেশন ব্যবহার করতে পারেন। কন্ট্রোলার বা ভিউ মডেল থেকে Translator সার্ভিস ইনজেক্ট করে ট্রান্সলেশনকে প্রয়োগ করা হয়।
কন্ট্রোলারে ট্রান্সলেশন ব্যবহার:
namespace Application\Controller;
use Laminas\Mvc\Controller\AbstractActionController;
use Laminas\View\Model\ViewModel;
use Laminas\I18n\Translator\TranslatorInterface;
class IndexController extends AbstractActionController
{
protected $translator;
public function __construct(TranslatorInterface $translator)
{
$this->translator = $translator;
}
public function indexAction()
{
// ইংরেজি বা বাংলা অনুসারে ট্রান্সলেশন ব্যবহার
$welcomeMessage = $this->translator->translate('Welcome');
$helloMessage = $this->translator->translate('Hello, User!');
return new ViewModel([
'welcomeMessage' => $welcomeMessage,
'helloMessage' => $helloMessage,
]);
}
}
এখানে, TranslatorInterface ইন্টিগ্রেট করে আমরা কন্ট্রোলারে ট্রান্সলেশন ব্যবহার করেছি। এখন এই মেসেজগুলো ভিউতে প্রসেস করা যাবে।
ভিউ টেমপ্লেট (index.phtml):
<h1><?php echo $this->escapeHtml($welcomeMessage); ?></h1>
<p><?php echo $this->escapeHtml($helloMessage); ?></p>
এখানে welcomeMessage এবং helloMessage ভেরিয়েবলগুলি কন্ট্রোলার থেকে ভিউতে প্রেরণ করা হয়েছে এবং এগুলোর মধ্যে ভাষানুযায়ী ট্রান্সলেশন প্রদর্শিত হবে।
৫. ভাষা পরিবর্তন করা
Zend Framework (Laminas) এ ভাষা পরিবর্তন করার জন্য আপনি ব্যবহারকারীর সেট করা ভাষা বা ব্রাউজারের ভাষার উপর নির্ভর করে ভাষা পরিবর্তন করতে পারেন। এক্ষেত্রে, Language Switcher ব্যবহার করা হয়, যা ভাষার পছন্দ পরিবর্তন করতে সাহায্য করে।
ভাষা পরিবর্তন উদাহরণ:
namespace Application\Controller;
use Laminas\Mvc\Controller\AbstractActionController;
use Laminas\View\Model\ViewModel;
use Laminas\I18n\Translator\TranslatorInterface;
class LanguageController extends AbstractActionController
{
public function switchAction()
{
$language = $this->params()->fromRoute('lang', 'en_US'); // URL থেকে ভাষা পড়ুন
$translator = $this->getServiceLocator()->get(TranslatorInterface::class);
$translator->setLocale($language); // ভাষা পরিবর্তন
// পুনঃনির্দেশ করুন অথবা একই পেজ রিফ্রেশ করুন
return $this->redirect()->toRoute('home');
}
}
এখানে, switchAction মেথডে lang প্যারামিটার ধরে ভাষা পরিবর্তন করা হচ্ছে। ব্যবহারকারী যে ভাষা চায়, তা অ্যাপ্লিকেশন ব্যবহার করে অনুবাদ করা হবে।
৬. সারাংশ
Zend Framework (Laminas) এর মাধ্যমে ট্রান্সলেশন ফাইল তৈরি এবং ব্যবহারের মাধ্যমে আপনার অ্যাপ্লিকেশনকে আন্তর্জাতিকীকৃত করা সম্ভব। .po বা .php অ্যারে ফাইল ব্যবহার করে আপনি বিভিন্ন ভাষার জন্য ট্রান্সলেশন তৈরি করতে পারেন। Zend\Translator এবং Zend\I18n কম্পোনেন্ট ব্যবহার করে সহজে ভাষা পরিবর্তন এবং ট্রান্সলেশন লোড করা যায়। ভাষা পরিবর্তন ফিচার ব্যবহারকারীদের বিভিন্ন ভাষায় অ্যাপ্লিকেশনটি ব্যবহার করার সুযোগ দেয়।
Zend Framework (এখন Laminas) এ লোকালাইজেশন (Localization) এবং ইন্টারন্যাশনালাইজেশন (Internationalization) একটি গুরুত্বপূর্ণ অংশ। এই ফিচারটি অ্যাপ্লিকেশনটিকে বিভিন্ন ভাষা এবং অঞ্চলের কনটেন্ট প্রদর্শন করার জন্য সাহায্য করে। আপনি যদি আপনার অ্যাপ্লিকেশনটি একাধিক ভাষায় প্রদর্শন করতে চান, তবে Zend Framework এর মধ্যে ভাষা নির্ধারণ, কনটেন্ট পরিবর্তন এবং ভাষাগত অপশন প্রদর্শন করার জন্য কিছু কনফিগারেশন করতে হবে।
লোকালাইজেশন (Localization) কি?
লোকালাইজেশন হল একটি প্রক্রিয়া যার মাধ্যমে আপনার অ্যাপ্লিকেশন বা সাইটটি বিভিন্ন ভাষা এবং অঞ্চলের জন্য কাস্টমাইজ করা হয়। এটি ভাষার, ডেটার ফরম্যাট, মুদ্রার ধরণ, এবং অন্য সাংস্কৃতিক উপাদানকে সমর্থন করে। উদাহরণস্বরূপ, ইংরেজিতে "date" 12/31/2024 হতে পারে, কিন্তু জার্মানিতে তা 31/12/2024 হতে পারে।
Zend Framework এ লোকালাইজেশন নিশ্চিত করার জন্য Zend\I18n কম্পোনেন্ট ব্যবহার করা হয়। এটি ডেটা ফরম্যাটিং, স্ট্রিং ট্রান্সলেশন, মুদ্রা, সংখ্যা, এবং অন্যান্য স্থানিক বিষয়গুলো পরিচালনা করতে সহায়তা করে।
লোকালাইজেশন কনফিগারেশন সেটআপ
- Zend\I18n কম্পোনেন্ট ইনস্টল করা
প্রথমে, আপনাকে Zend\I18n কম্পোনেন্ট ইনস্টল করতে হবে, যা আপনাকে ট্রান্সলেশন এবং স্থানিক ফরম্যাটিং প্রদান করবে।
composer require laminas/laminas-i18n
- ভাষা ফাইল তৈরি করা
Zend Framework এ লোকালাইজড কনটেন্ট প্রদর্শন করার জন্য আপনাকে ভাষার ফাইল তৈরি করতে হবে। সাধারণত ভাষা ফাইলগুলি .po বা .mo ফরম্যাটে হয়, তবে Zend এ আপনি PHP অ্যারের মাধ্যমে ভাষা ফাইল তৈরি করতে পারেন।
উদাহরণ: English ভাষা ফাইল (en_US.php)
return [
'greeting' => 'Hello, world!',
'welcome' => 'Welcome to our application.',
];
উদাহরণ: Bengali ভাষা ফাইল (bn_BD.php)
return [
'greeting' => 'হ্যালো, বিশ্ব!',
'welcome' => 'আমাদের অ্যাপ্লিকেশনে স্বাগতম।',
];
এই ভাষা ফাইলগুলি সাধারণত আপনার অ্যাপ্লিকেশনের language ডিরেক্টরির মধ্যে সংরক্ষণ করা হয়।
- লোকাল কনফিগারেশন
Zend Framework এর লোকালাইজেশন সিস্টেমের জন্য আপনাকে কনফিগারেশন সেটআপ করতে হবে যাতে অ্যাপ্লিকেশনটি সঠিক ভাষায় কনটেন্ট প্রদর্শন করতে পারে।
module.config.php
return [
'service_manager' => [
'factories' => [
'Translator' => 'Zend\I18n\Translator\TranslatorServiceFactory',
],
],
'translator' => [
'locale' => 'en_US', // Default locale
'translation_file_patterns' => [
[
'type' => 'phparray',
'base_dir' => __DIR__ . '/../language',
'pattern' => '%s.php',
],
],
],
];
এখানে, locale সেট করা হয়েছে en_US (ইংরেজি) হিসেবে, এবং translation_file_patterns এর মাধ্যমে ভাষা ফাইলের লোকেশন নির্ধারণ করা হয়েছে।
ভাষা পরিবর্তন করা
আপনি অ্যাপ্লিকেশনে ব্যবহারকারীকে ভাষা পরিবর্তনের সুযোগ দিতে পারেন। এটি করতে আপনাকে ইভেন্ট বা কন্ট্রোলার থেকে locale পরিবর্তন করতে হবে।
ভাষা পরিবর্তন উদাহরণ
use Zend\I18n\Translator\Translator;
class LanguageController extends AbstractActionController
{
protected $translator;
public function __construct(Translator $translator)
{
$this->translator = $translator;
}
public function changeLanguageAction()
{
$locale = $this->params()->fromRoute('locale', 'en_US'); // URL থেকে লোকাল পাঠান
$this->translator->setLocale($locale);
return $this->redirect()->toRoute('home'); // হোম পেজে রিডিরেক্ট
}
}
এখানে, আপনি URL এর মাধ্যমে লোকাল পাঠাতে পারেন, যেমন: /language/change/locale/en_US।
ট্রান্সলেশন ব্যবহার করা
একবার লোকালাইজেশন কনফিগার হয়ে গেলে, আপনি আপনার কন্ট্রোলার বা ভিউ থেকে ট্রান্সলেশন ফাংশন ব্যবহার করতে পারেন।
কন্ট্রোলারে ট্রান্সলেশন ব্যবহার
use Zend\I18n\Translator\Translator;
class IndexController extends AbstractActionController
{
protected $translator;
public function __construct(Translator $translator)
{
$this->translator = $translator;
}
public function indexAction()
{
// ট্রান্সলেটেড স্ট্রিং ব্যবহার
$greeting = $this->translator->translate('greeting');
return new ViewModel(['greeting' => $greeting]);
}
}
এখানে, translate() মেথড ব্যবহার করে ভাষার ফাইল থেকে "greeting" চাবির মান ট্রান্সলেট করা হচ্ছে।
ভিউতে ট্রান্সলেশন ব্যবহার
// View script (e.g., index.phtml)
echo $this->translate('greeting');
এখানে, translate() মেথডের মাধ্যমে আপনি ভিউ স্ক্রিপ্টে ট্রান্সলেটেড স্ট্রিং প্রদর্শন করতে পারেন।
মুদ্রা এবং ডেটা ফরম্যাটিং
Zend Framework আপনাকে মুদ্রা এবং ডেটা ফরম্যাটিংয়ের জন্যও সুবিধা প্রদান করে। আপনি Zend\I18n\View\Helper\Currency এবং Zend\I18n\View\Helper\DateFormat হেল্পার ব্যবহার করতে পারেন।
মুদ্রা ফরম্যাটিং
echo $this->currency(1000.5, 'USD'); // $1,000.50
ডেটা ফরম্যাটিং
echo $this->dateFormat('2024-12-07', 'long'); // December 7, 2024
এখানে, currency() মেথডের মাধ্যমে আপনি মুদ্রা ফরম্যাটিং করতে পারেন এবং dateFormat() মেথডের মাধ্যমে আপনি ডেটার ফরম্যাট পরিবর্তন করতে পারেন।
সারাংশ
Zend Framework (এখন Laminas) এ লোকালাইজেশন কার্যকর করতে Zend\I18n কম্পোনেন্ট ব্যবহার করা হয়। এর মাধ্যমে আপনি বিভিন্ন ভাষার জন্য কনটেন্ট প্রদর্শন, ডেটা ফরম্যাটিং, মুদ্রা এবং সংখ্যা ফরম্যাটিং করতে পারেন। ভাষার ফাইল তৈরি করা, লোকাল সেটআপ করা, এবং ট্রান্সলেশন ব্যবহারের মাধ্যমে আপনি সহজেই মাল্টি-ল্যাঙ্গুয়েজ অ্যাপ্লিকেশন তৈরি করতে পারবেন। Event-based language switching এবং view helpers এর মাধ্যমে আপনি ভাষাগত কাস্টমাইজেশন আরও সহজে পরিচালনা করতে পারবেন।
Zend Framework (এখন Laminas) বিভিন্ন ধরনের ডেটা ফরম্যাটিং এবং টাইমজোন ম্যানেজমেন্টের জন্য শক্তিশালী টুলস সরবরাহ করে। এর মাধ্যমে আপনি ডেটা প্রদর্শন, ডেটা সংরক্ষণ এবং টাইমজোন সম্পর্কিত কাজগুলি সহজে এবং কার্যকরভাবে পরিচালনা করতে পারবেন। ডেটা ফরম্যাটিং এবং টাইমজোন ম্যানেজমেন্টে সাধারণত তারিখ ও সময়, সংখ্যা, মুদ্রা ইত্যাদি ফরম্যাট করা এবং বিভিন্ন টাইমজোনের মধ্যে রূপান্তর করা অন্তর্ভুক্ত থাকে।
এই গাইডে, Zend Framework (Laminas) এর ডেটা ফরম্যাটিং এবং টাইমজোন ম্যানেজমেন্টের কার্যকারিতা দেখানো হবে।
১. ডেটা ফরম্যাটিং
Zend Framework এ ডেটা ফরম্যাটিং বিভিন্ন ধরনের ডেটা যেমন তারিখ, সময়, সংখ্যা, মুদ্রা ইত্যাদি প্রক্রিয়া করার জন্য সহায়ক। এতে Zend\I18n (Internationalization) কম্পোনেন্ট ব্যবহার করা হয়, যা ডেটার ফরম্যাটিং, মুদ্রার ফরম্যাটিং, ভাষাগত রূপান্তর এবং অন্যান্য আন্তর্জাতিককরণ কাজ সম্পন্ন করে।
Zend\I18n: Number Formatting
ডেটার সংখ্যা ফরম্যাট করতে Zend\I18n\Filter\NumberFormat ব্যবহার করা হয়। এটি সংখ্যা ও মুদ্রাকে নির্দিষ্ট ভাষার এবং লোকালাইজেশন অনুযায়ী ফরম্যাট করে।
use Laminas\I18n\Filter\NumberFormat;
$filter = new NumberFormat();
$number = 1234567.89;
// ইংরেজি (US) সংস্করণে ফরম্যাট
echo $filter->filter($number, 'en_US'); // Output: 1,234,567.89
// বাংলায় ফরম্যাট
echo $filter->filter($number, 'bn_IN'); // Output: ১২,৩৪,৫৬৭.৮৯
Zend\I18n: Date Formatting
তারিখ এবং সময় ফরম্যাট করতে Zend\I18n\Filter\DateFormat ব্যবহার করা হয়। এর মাধ্যমে আপনি বিভিন্ন দেশ এবং সংস্কৃতির জন্য তারিখ ও সময় প্রদর্শন করতে পারবেন।
use Laminas\I18n\Filter\DateFormat;
$filter = new DateFormat();
$date = new \DateTime('2024-12-07');
// ইংরেজি (US) সংস্করণে তারিখ ফরম্যাট
echo $filter->filter($date, 'en_US'); // Output: 12/07/2024
// বাংলায় তারিখ ফরম্যাট
echo $filter->filter($date, 'bn_IN'); // Output: ০৭/১২/২০২৪
২. টাইমজোন ম্যানেজমেন্ট
Zend Framework (Laminas) টাইমজোন ম্যানেজমেন্টের জন্য শক্তিশালী ফিচার সরবরাহ করে। এটি ব্যবহার করে আপনি সহজে টাইমজোন কনভার্শন (conversion) করতে পারেন এবং সময়ের সাথে সম্পর্কিত ডেটা ফরম্যাট করতে পারেন।
Zend\I18n: TimeZone Handling
Zend\I18n\Filter\TimeZone ক্লাসটি টাইমজোন সম্পর্কিত কাজগুলো ম্যানেজ করার জন্য ব্যবহৃত হয়। এটি বিভিন্ন টাইমজোনের মধ্যে সময় রূপান্তর করার জন্য সাহায্য করে।
use Laminas\I18n\Filter\TimeZone;
$filter = new TimeZone();
// UTC টাইমজোনে সময়
$utcTime = new \DateTime('now', new \DateTimeZone('UTC'));
echo $utcTime->format('Y-m-d H:i:s'); // Output: 2024-12-07 07:00:00
// ভারতীয় টাইমজোন (IST)
$indiaTime = new \DateTime('now', new \DateTimeZone('Asia/Kolkata'));
echo $indiaTime->format('Y-m-d H:i:s'); // Output: 2024-12-07 12:30:00
Zend\I18n: TimeZone Conversion
যদি আপনি একটি টাইমজোন থেকে অন্য টাইমজোনে সময় রূপান্তর করতে চান, তবে DateTime এবং DateTimeZone ক্লাসগুলো ব্যবহার করা যেতে পারে। উদাহরণস্বরূপ, UTC থেকে IST টাইমজোনে রূপান্তর।
$utcTime = new \DateTime('2024-12-07 07:00:00', new \DateTimeZone('UTC'));
// UTC থেকে IST তে রূপান্তর
$utcTime->setTimezone(new \DateTimeZone('Asia/Kolkata'));
echo $utcTime->format('Y-m-d H:i:s'); // Output: 2024-12-07 12:30:00
৩. টাইমজোন এবং তারিখ ফরম্যাটিং একত্রে ব্যবহার
আপনি টাইমজোন এবং তারিখ ফরম্যাটিং একত্রে ব্যবহার করে কোনো নির্দিষ্ট টাইমজোনে সময় প্রদর্শন করতে পারেন।
use Laminas\I18n\Filter\DateFormat;
$date = new \DateTime('2024-12-07 07:00:00', new \DateTimeZone('UTC'));
$date->setTimezone(new \DateTimeZone('Asia/Kolkata'));
$filter = new DateFormat();
echo $filter->filter($date, 'bn_IN'); // Output: ০৭/১২/২০২৪
এখানে, প্রথমে UTC টাইমজোনে একটি সময় সেট করা হয়েছে এবং তারপর সেটিকে IST টাইমজোনে রূপান্তর করা হয়েছে। শেষে, সেই সময়কে বাংলায় ফরম্যাট করা হয়েছে।
৪. Zend\I18n ব্যবহার করে বিভিন্ন ভাষার জন্য ফরম্যাটিং
Zend Framework (Laminas) একাধিক ভাষার জন্য ডেটা ফরম্যাটিং পরিচালনা করতে সাহায্য করে। আপনি যে ভাষায় ডেটা প্রদর্শন করতে চান, সেই ভাষার জন্য উপযুক্ত ফরম্যাট ব্যবহার করতে পারবেন।
use Laminas\I18n\Filter\DateFormat;
$date = new \DateTime('2024-12-07 07:00:00', new \DateTimeZone('UTC'));
$filter = new DateFormat();
echo $filter->filter($date, 'en_US'); // Output: 12/07/2024
echo $filter->filter($date, 'bn_IN'); // Output: ০৭/১২/২০২৪
এখানে, একই সময়ের জন্য ইংরেজি এবং বাংলা ফরম্যাট ব্যবহার করা হয়েছে।
৫. Zend Framework এর টুলস এবং অন্যান্য ফিচার
Zend Framework এ Zend\I18n ছাড়াও কিছু অন্যান্য ইউটিলিটি টুলসও রয়েছে যা আপনাকে ডেটা ফরম্যাটিং এবং টাইমজোন ম্যানেজমেন্টে সহায়তা করতে পারে:
- Zend\I18n\Translator: আন্তর্জাতিককরণের জন্য ভাষার অনুবাদে সহায়তা করে।
- Zend\I18n\NumberFormat: সংখ্যা, মুদ্রা এবং শতাংশ ফরম্যাট করার জন্য ব্যবহৃত হয়।
- Zend\I18n\Locale: নির্দিষ্ট লোকাল বা ভাষাগত পরিবেশ সেট করার জন্য ব্যবহৃত হয়।
সারাংশ
Zend Framework (Laminas) ডেটা ফরম্যাটিং এবং টাইমজোন ম্যানেজমেন্টের জন্য শক্তিশালী সরঞ্জাম প্রদান করে। Zend\I18n কম্পোনেন্টটি সংখ্যার ফরম্যাট, তারিখ এবং সময়ের ফরম্যাটিং, মুদ্রার ফরম্যাটিং এবং টাইমজোন রূপান্তর প্রক্রিয়া সহজ করে তোলে। এই ফিচারগুলো ব্যবহার করে আপনি বিভিন্ন ভাষায় এবং টাইমজোনে ডেটা সঠিকভাবে প্রদর্শন করতে পারবেন। এটি বিশেষভাবে উপকারী যখন আপনার অ্যাপ্লিকেশনটি আন্তর্জাতিক পর্যায়ে বা বিভিন্ন টাইমজোনে কাজ করবে।
Read more