টেমপ্লেট এবং কন্ট্রোলারে মেসেজ ট্রান্সলেট করা

আন্তর্জাতিকীকরণ (i18n) এবং লোকালাইজেশন (l10n) - সিম্ফনি (Symfony) - Web Development

254

Symfony-তে অনুবাদ (Translation) একটি গুরুত্বপূর্ণ ফিচার, যা বিভিন্ন ভাষায় কনটেন্ট প্রদর্শন করার জন্য ব্যবহৃত হয়। Symfony ফ্রেমওয়ার্কে Translation Component ব্যবহার করে আপনি সহজেই মেসেজ ট্রান্সলেট করতে পারেন, যাতে আপনার অ্যাপ্লিকেশন একাধিক ভাষায় সমর্থন দিতে পারে। Symfony-এর ট্রান্সলেশন সিস্টেম আপনাকে কন্ট্রোলার এবং টেমপ্লেট উভয় স্থানে মেসেজ ট্রান্সলেট করতে সাহায্য করে।

এখানে কন্ট্রোলার এবং টেমপ্লেট উভয় জায়গায় কিভাবে মেসেজ ট্রান্সলেট করা যায়, তার বিস্তারিত আলোচনা করা হবে।


Symfony তে ট্রান্সলেশন কনফিগারেশন

প্রথমে আপনাকে Translation Component কনফিগার করতে হবে। Symfony সাধারণত translations/ ফোল্ডারে ভাষার জন্য প্রয়োজনীয় ফাইল সংরক্ষণ করে, যেমন: messages.en.yaml (ইংরেজি), messages.fr.yaml (ফরাসি) ইত্যাদি।

1. Translation Component ইনস্টল করা

Symfony প্রজেক্টে Translation Component ডিফল্টভাবে থাকে, তবে আপনি যদি এটি আলাদাভাবে ইনস্টল করতে চান, তাহলে এটি করতে হবে:

composer require symfony/translation

2. ট্রান্সলেশন ফাইল তৈরি করা

আপনার প্রজেক্টে translations/ ডিরেক্টরিতে ভাষা নির্ভর ফাইল তৈরি করুন, যেমন: messages.en.yaml, messages.fr.yaml ইত্যাদি।

translations/messages.en.yaml ফাইল উদাহরণ:

hello: 'Hello, welcome to Symfony!'
greeting: 'Good morning, %name%'

translations/messages.fr.yaml ফাইল উদাহরণ:

hello: 'Bonjour, bienvenue à Symfony!'
greeting: 'Bonjour, %name%'

3. ট্রান্সলেশন কনফিগারেশন

আপনার config/packages/translation.yaml ফাইলে Translator কনফিগারেশন করা থাকে। সাধারণত এটি ডিফল্টভাবে কনফিগার থাকে, কিন্তু নিশ্চিত করতে চাইলে এটি দেখুন:

framework:
    translator:
        default_path: '%kernel.project_dir%/translations'
        fallbacks:
            - en

এটি Symfony-কে translations/ ডিরেক্টরিতে অনুবাদ ফাইল খুঁজে বের করতে বলে।


Symfony কন্ট্রোলারে মেসেজ ট্রান্সলেট করা

Symfony কন্ট্রোলারে ট্রান্সলেশন করার জন্য, আপনি TranslatorInterface ব্যবহার করতে পারেন, যা Symfony-কে মেসেজ ট্রান্সলেট করতে সাহায্য করে।

কন্ট্রোলারে ট্রান্সলেশন ব্যবহার করা

কন্ট্রোলার ক্লাসে TranslatorInterface ইনজেক্ট করা:

namespace App\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Translation\TranslatorInterface;

class HomeController extends AbstractController
{
    public function index(TranslatorInterface $translator): Response
    {
        // ইংরেজি ভাষায় মেসেজ ট্রান্সলেট করা
        $message = $translator->trans('hello');
        
        // ফরাসি ভাষায় মেসেজ ট্রান্সলেট করা
        $messageInFrench = $translator->trans('hello', [], 'messages', 'fr');

        return $this->render('home/index.html.twig', [
            'message' => $message,
            'messageInFrench' => $messageInFrench
        ]);
    }
}
  • trans() মেথড: trans() মেথডের মাধ্যমে আপনি আপনার মেসেজকে ট্রান্সলেট করেন। আপনি একটি স্ট্রিং, বিকল্প (যদি থাকে), ভাষার ডোমেন এবং ভাষা প্রয়োজনের উপর ভিত্তি করে মেসেজ ট্রান্সলেট করতে পারেন।
  • ভাষা প্যারামিটার: আপনি প্যারামিটার ব্যবহার করে পরিবর্তনযোগ্য অংশ যেমন নাম (%name%) ব্যবহার করতে পারেন।

Symfony টেমপ্লেটে মেসেজ ট্রান্সলেট করা

Symfony টেমপ্লেটে Twig টেমপ্লেট ইঞ্জিন ব্যবহার করে মেসেজ ট্রান্সলেট করতে trans ফিল্টার ব্যবহার করা হয়।

Twig টেমপ্লেটে মেসেজ ট্রান্সলেট করা

home/index.html.twig টেমপ্লেট উদাহরণ:

<h1>{{ 'hello'|trans }}</h1>
<p>{{ 'greeting'|trans({'%name%': 'John'}) }}</p>

এখানে:

  • 'hello'|trans: এটি hello কীটিকে ব্যবহারকারীর ভাষায় অনুবাদ করবে।
  • 'greeting'|trans({'%name%': 'John'}): এটি greeting কীটিকে অনুবাদ করবে এবং %name% প্যারামিটারকে John মানে প্রতিস্থাপন করবে।

ইন্টারন্যাশনালাইজেশন (i18n) এবং লোকালাইজেশন (l10n)

Symfony তে আপনি ইন্টারন্যাশনালাইজেশন (i18n) এবং লোকালাইজেশন (l10n) প্রক্রিয়া সহজভাবে বাস্তবায়ন করতে পারেন:

  1. i18n: এটি বিভিন্ন ভাষায় অ্যাপ্লিকেশন কনটেন্ট সরবরাহ করার প্রক্রিয়া।
  2. l10n: এটি একটি নির্দিষ্ট অঞ্চলের জন্য ভাষার কনটেন্ট কাস্টমাইজ করার প্রক্রিয়া।

অ্যাপ্লিকেশনের ভাষা পরিবর্তন করা

Symfony এ ভাষা পরিবর্তনের জন্য, আপনি Request অবজেক্ট ব্যবহার করতে পারেন। আপনি ভাষা পরিবর্তন করতে setLocale() মেথড ব্যবহার করতে পারেন।

public function switchLanguage(Request $request, string $locale): Response
{
    $this->get('session')->set('_locale', $locale);

    return $this->redirectToRoute('home');
}

এটি ব্যবহারকারীর ভাষা সেট করবে এবং তারপর অ্যাপ্লিকেশন পুনঃরিলোড করে নতুন ভাষায় কনটেন্ট প্রদর্শন করবে।


সারাংশ

Symfony-তে টেমপ্লেট এবং কন্ট্রোলারে মেসেজ ট্রান্সলেট করা খুবই সহজ। Symfony এর Translation Component ব্যবহার করে আপনি সহজেই বিভিন্ন ভাষায় কনটেন্ট প্রদর্শন করতে পারেন। KISS (Keep It Simple and Stupid) পদ্ধতি অনুসরণ করে Symfony আপনাকে টেমপ্লেট এবং কন্ট্রোলার উভয় স্থানে ট্রান্সলেশন ব্যবস্থাপনা সরল এবং কার্যকরভাবে বাস্তবায়ন করতে সাহায্য করে।

Content added By
Promotion

Are you sure to start over?

Loading...