Locale এবং Language ফাইল ব্যবস্থাপনা

ইন্টারন্যাশনালাইজেশন (i18n) এবং লোকালাইজেশন (l10n) - কেকপিএইচপি (CakePHP) - Web Development

261

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 তে একাধিক ভাষা সমর্থনযোগ্য এবং স্থানীয়কৃত অ্যাপ্লিকেশন তৈরি করতে পারবেন।

Content added By
Promotion

Are you sure to start over?

Loading...