ট্রান্সলেশন ফাইল তৈরি এবং ব্যবহারের নিয়ম

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

331

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 কম্পোনেন্ট ব্যবহার করে সহজে ভাষা পরিবর্তন এবং ট্রান্সলেশন লোড করা যায়। ভাষা পরিবর্তন ফিচার ব্যবহারকারীদের বিভিন্ন ভাষায় অ্যাপ্লিকেশনটি ব্যবহার করার সুযোগ দেয়।

Content added By
Promotion

Are you sure to start over?

Loading...