Zend\I18n মডিউল ব্যবহার করে ভাষার সাপোর্ট যোগ করা

Internationalization (i18n) এবং Localization (l10n) - জেন্ড ফ্রেমওয়ার্ক (Zend Framework) - Web Development

233

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 ক্লাস ব্যবহার করা হয়, এবং রাউটিং বা কন্ট্রোলারের মাধ্যমে ব্যবহারকারী ভাষা পরিবর্তন করতে পারেন।

Content added By
Promotion

Are you sure to start over?

Loading...