Skill

আন্তর্জাতিকীকরণ (i18n) এবং লোকালাইজেশন (l10n)

সিম্ফনি (Symfony) - Web Development

234

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

Symfony ফ্রেমওয়ার্কে i18n এবং l10n বাস্তবায়ন করা সহজ এবং এর জন্য Symfony বেশ কিছু বিল্ট-ইন টুলস এবং ফিচার সরবরাহ করে।


আন্তর্জাতিকীকরণ (i18n)

আন্তর্জাতিকীকরণ (i18n) হল অ্যাপ্লিকেশন বা সফটওয়্যারকে এমনভাবে ডিজাইন করা, যাতে এটি বিভিন্ন ভাষা এবং সংস্কৃতিতে কাজ করতে পারে। Symfony-তে আন্তর্জাতিকীকরণ সাধারণত টার্ন-এবল (configurable) প্রক্রিয়া হিসেবে কাজ করে এবং ভাষার ফাইল ব্যবহার করে বিভিন্ন ভাষায় কনটেন্ট প্রদর্শন করা যায়।

Symfony তে আন্তর্জাতিকীকরণ (i18n) কনফিগারেশন

  1. translations/ ডিরেক্টরি তৈরি:

    প্রথমে, আপনি একটি translations/ ডিরেক্টরি তৈরি করবেন যেখানে আপনার ভাষাগত ফাইল সংরক্ষিত হবে। উদাহরণস্বরূপ, messages.en.yaml, messages.fr.yaml, ইত্যাদি।

  2. ভাষাগত ফাইল তৈরি:

    translations/messages.en.yaml (ইংরেজি ভাষার জন্য):

    greeting: 'Hello'
    farewell: 'Goodbye'
    

    translations/messages.fr.yaml (ফরাসি ভাষার জন্য):

    greeting: 'Bonjour'
    farewell: 'Au revoir'
    
  3. Symfony কনফিগারেশন:

    Symfony কনফিগারেশন ফাইলে আন্তর্জাতিকীকরণের জন্য translator সার্ভিস কনফিগার করা থাকে:

    config/packages/translation.yaml:

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

    এখানে default_path দ্বারা translations/ ডিরেক্টরি নির্দেশ করা হয়েছে, এবং fallback ভাষা হিসেবে ইংরেজি নির্ধারণ করা হয়েছে।


লোকালাইজেশন (l10n)

লোকালাইজেশন (l10n) হল আন্তর্জাতিকীকৃত অ্যাপ্লিকেশনকে নির্দিষ্ট অঞ্চলের ভাষা, সংস্কৃতি, এবং স্থানীয় নিয়মাবলী অনুযায়ী কাস্টমাইজ করা। এটি সাধারণত তারিখ এবং সময় ফরম্যাট, মুদ্রা (currency), সংখ্যা ফরম্যাট ইত্যাদির সাথে সম্পর্কিত।

Symfony-তে লোকালাইজেশন সঠিকভাবে কনফিগার করতে, Intl (Internationalization) এক্সটেনশন এবং Locale ব্যবহৃত হয়।

Symfony তে লোকালাইজেশন (l10n) কনফিগারেশন

  1. Locale সেট করা:

    Symfony-তে Locale সেট করতে Request অবজেক্টে Locale সংজ্ঞায়িত করা হয়। সাধারণত, এটি app/config/config.yaml ফাইলে কনফিগার করা হয়।

    framework:
        default_locale: 'en'
    

    এখানে default_locale ইংরেজি নির্ধারণ করা হয়েছে।

  2. তারিখ এবং সময় ফরম্যাট:

    Symfony Intl এক্সটেনশন ব্যবহার করে স্থানীয়ভাবে তারিখ এবং সময় ফরম্যাট করতে পারে:

    use Symfony\Component\Intl\DateFormatter\DateFormat;
    use Symfony\Component\Intl\Locale;
    
    $dateFormatter = new \IntlDateFormatter('en_US', \IntlDateFormatter::LONG, \IntlDateFormatter::SHORT);
    echo $dateFormatter->format(new \DateTime());
    

    এখানে IntlDateFormatter ব্যবহার করা হয়েছে en_US লোকেলের জন্য।

  3. সংখ্যা এবং মুদ্রা ফরম্যাট:

    Symfony Intl এক্সটেনশন ব্যবহার করে স্থানীয়ভাবে সংখ্যা এবং মুদ্রা ফরম্যাট করতে সাহায্য করে:

    use Symfony\Component\Intl\NumberFormatter\NumberFormatter;
    
    $currencyFormatter = new \NumberFormatter('en_US', \NumberFormatter::CURRENCY);
    echo $currencyFormatter->format(12345.67);
    

    এটি $12,345.67 এইভাবে মুদ্রা ফরম্যাট করবে।


Symfony তে আন্তর্জাতিকীকরণ (i18n) এবং লোকালাইজেশন (l10n) ব্যবহার করা

  1. ভাষা পরিবর্তন করা:

    Symfony অ্যাপ্লিকেশনে ভাষা পরিবর্তন করতে, আপনি URL বা সেশনের মাধ্যমে ভাষা পরিবর্তন করতে পারেন।

    উদাহরণস্বরূপ, কন্ট্রোলারে ভাষা পরিবর্তন:

    use Symfony\Component\HttpFoundation\Request;
    use Symfony\Component\HttpFoundation\RedirectResponse;
    
    class LanguageController extends AbstractController
    {
        public function switchLanguage(Request $request): RedirectResponse
        {
            $language = $request->get('lang');
            $this->get('session')->set('_locale', $language);
            return $this->redirectToRoute('home');
        }
    }
    

    এখানে lang প্যারামিটার ব্যবহার করে URL-র মাধ্যমে ভাষা পরিবর্তন করা হচ্ছে।

  2. থেমস এবং ফর্ম কাস্টমাইজেশন:

    ফর্মের ক্ষেত্রগুলোর লেবেলও বিভিন্ন ভাষায় কাস্টমাইজ করা যায়। Symfony ফর্মগুলোর জন্য translation_domain প্যারামিটার ব্যবহার করে ভাষাগত ফাইল থেকে লেবেল রেন্ডার করা যায়:

    $builder->add('username', TextType::class, [
        'label' => 'username_label',
        'translation_domain' => 'messages'
    ]);
    

    এখানে messages ফাইল থেকে username_label কিপর্যন্ত ভাষা অনুসারে রেন্ডার হবে।


Symfony তে আন্তর্জাতিকীকরণ এবং লোকালাইজেশন চ্যালেঞ্জ

  • ইউজার ইন্টারফেস: অ্যাপ্লিকেশনের ইউজার ইন্টারফেসকে আন্তর্জাতিকীকরণ করা অনেক সময় চ্যালেঞ্জ হতে পারে, যেমন বিভিন্ন ভাষার জন্য যথাযথ স্থান খুঁজে পাওয়া।
  • সংস্কৃতি পরিবর্তন: সংখ্যার ফরম্যাট, তারিখ এবং সময়ের ফরম্যাটে বিভিন্ন সংস্কৃতির মধ্যে পার্থক্য থাকতে পারে, যা সঠিকভাবে কনফিগার করা প্রয়োজন।
  • টেমপ্লেট এবং ফর্ম: ফর্ম এবং টেমপ্লেটের ক্ষেত্রগুলো বিভিন্ন ভাষায় কাস্টমাইজ করা ও সঠিকভাবে রেন্ডার করা চ্যালেঞ্জিং হতে পারে।

সারাংশ

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

Content added By

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

Symfony তে ট্রান্সলেশন সেটআপ করার জন্য Symfony-র Translation Component ব্যবহার করা হয়, যা অনুবাদযোগ্য স্ট্রিং এবং ভাষার জন্য ফাইল সংরক্ষণ এবং লোড করার জন্য উপযুক্ত।


Symfony তে ট্রান্সলেশন সেটআপের ধাপ

Symfony তে ট্রান্সলেশন সেটআপ করতে, আপনাকে কিছু সাধারণ কনফিগারেশন এবং ফাইল তৈরি করতে হবে।

১. ট্রান্সলেশন কম্পোনেন্ট ইনস্টল করা

Symfony প্রজেক্টে ট্রান্সলেশন ফিচারটি ব্যবহার করার জন্য Translation Component ইনস্টল করা প্রয়োজন। আপনি এই কম্পোনেন্টটি Composer এর মাধ্যমে ইনস্টল করতে পারেন।

composer require symfony/translation

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

Symfony তে ট্রান্সলেশন সাধারণত YAML বা XLIFF ফরম্যাটে করা হয়, তবে PHP বা CSV ফরম্যাটেও ট্রান্সলেশন ফাইল ব্যবহার করা যেতে পারে। Symfony ডিফল্টভাবে YAML ফাইল ব্যবহার করে।

YAML ফাইল তৈরি:

  1. translations/ ডিরেক্টরিতে একটি ফাইল তৈরি করুন, যেমন messages.en.yaml (এটি ইংরেজি ভাষার জন্য) এবং messages.fr.yaml (ফরাসি ভাষার জন্য)।
  2. এখানে একটি উদাহরণ দেওয়া হলো:

translations/messages.en.yaml (ইংরেজি ভাষার জন্য):

hello: 'Hello, how are you?'
welcome: 'Welcome to our website!'

translations/messages.fr.yaml (ফরাসি ভাষার জন্য):

hello: 'Bonjour, comment ça va?'
welcome: 'Bienvenue sur notre site web!'

এখানে, hello এবং welcome স্ট্রিং দুটি ইংরেজি এবং ফরাসি ভাষায় অনুবাদ করা হয়েছে।


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

Symfony তে ট্রান্সলেশন ফাইল লোড করতে config/packages/translation.yaml ফাইলে কিছু কনফিগারেশন করতে হবে।

config/packages/translation.yaml:

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

এখানে:

  • default_path: এটি translations/ ডিরেক্টরির পাথ নির্দেশ করে, যেখানে অনুবাদ ফাইলগুলি রাখা হবে।
  • fallbacks: যদি নির্দিষ্ট ভাষার জন্য কোনো অনুবাদ পাওয়া না যায়, তবে এটি ডিফল্ট ভাষা হিসেবে কাজ করবে (এখানে, ইংরেজি en ভাষা সেট করা হয়েছে)।

৪. ট্রান্সলেশন ব্যবহারের উদাহরণ

একটি কন্ট্রোলার বা টেমপ্লেটের মধ্যে ট্রান্সলেশন ব্যবহার করতে, Symfony এর Translator সেবা ব্যবহার করা হয়।

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

namespace App\Controller;

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

class DefaultController extends AbstractController
{
    /**
     * @Route("/greet", name="greet")
     */
    public function greet(TranslatorInterface $translator): Response
    {
        // ইংরেজি ভাষার ট্রান্সলেশন
        $translatedMessage = $translator->trans('hello');
        
        return new Response($translatedMessage);
    }
}

এখানে, $translator->trans('hello') ব্যবহার করে আমরা hello স্ট্রিংটি অনুবাদ করছি। যদি ভাষা ফরাসি হয়, তবে এটি Bonjour, comment ça va? আউটপুট করবে, আর যদি ইংরেজি হয়, তবে Hello, how are you? আউটপুট হবে।

Twig টেমপ্লেটে ট্রান্সলেশন ব্যবহার:

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

<h1>{{ 'welcome'|trans }}</h1>

এখানে 'welcome'|trans ব্যবহার করে, messages ফাইল থেকে অনুবাদটি আনা হবে এবং সঠিক ভাষায় প্রদর্শিত হবে।


৫. ভাষা পরিবর্তন করা

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

use Symfony\Component\HttpFoundation\Request;

public function changeLanguage(Request $request, string $language): Response
{
    $request->getSession()->set('_locale', $language);
    return $this->redirectToRoute('homepage');
}

এখানে, আমরা ব্যবহারকারীর সেশনে _locale সেট করে ভাষা পরিবর্তন করছি এবং তারপর হোমপেজে রিডিরেক্ট করছি।


৬. কাস্টম ট্রান্সলেশন ফাইল

Symfony তে আপনি কাস্টম ট্রান্সলেশন ফাইলও ব্যবহার করতে পারেন। উদাহরণস্বরূপ, আপনি যদি একটি নির্দিষ্ট বর্ননা বা মডিউলের জন্য আলাদা ভাষা ফাইল ব্যবহার করতে চান, তবে এটি translations/ ফোল্ডারে তৈরি করতে পারেন।

translations/messages.custom.en.yaml (কাস্টম ইংরেজি ভাষা):

custom_welcome: 'Welcome, user! Have a great day!'

এবং কন্ট্রোলারে ব্যবহার করুন:

$translatedMessage = $translator->trans('custom_welcome');

৭. ডিফল্ট ভাষার জন্য ট্রান্সলেশন ব্যবহার

যদি কোনো ভাষার জন্য অনুবাদ না পাওয়া যায়, Symfony fallback language ব্যবহার করবে। এটি fallbacks কনফিগারেশন অনুযায়ী কাজ করে, যেমন:

framework:
    translator:
        fallbacks:
            - en

এখানে, যদি নির্বাচিত ভাষায় কোনো অনুবাদ না থাকে, তবে এটি en (ইংরেজি) ভাষার অনুবাদ ব্যবহার করবে।


সারাংশ

Symfony তে ট্রান্সলেশন ব্যবস্থাপনা খুবই সহজ এবং নমনীয়। Translation Component ব্যবহার করে আপনি সহজে একাধিক ভাষায় কনটেন্ট অনুবাদ করতে পারেন। এটি YAML, XLIFF, PHP, CSV ফাইল ফরম্যাটে ট্রান্সলেশন স্টোর করে এবং Symfony কনফিগারেশন ফাইলের মাধ্যমে ভাষা সেটআপ এবং ফallback ভাষা কনফিগার করতে সক্ষম। Symfony তে ট্রান্সলেশন ব্যবহারের মাধ্যমে আপনি আন্তর্জাতিককরণ (i18n) এবং স্থানীয়করণ (l10n) প্রক্রিয়া সুষ্ঠুভাবে পরিচালনা করতে পারবেন।

Content added By

Symfony একটি শক্তিশালী i18n (Internationalization) এবং l10n (Localization) সিস্টেম সরবরাহ করে, যা অ্যাপ্লিকেশনগুলিকে একাধিক ভাষায় অনুবাদ করতে সহায়ক। Symfony-এর Translation Component ব্যবহার করে আপনি সহজেই ট্রান্সলেশন ফাইলগুলি তৈরি এবং ব্যবহার করতে পারেন। Symfony বিভিন্ন ফাইল ফরম্যাটে (যেমন XLIFF, YAML, PHP, ইত্যাদি) ট্রান্সলেশন সাপোর্ট করে।

এই গাইডে, আমরা XLIFF এবং YAML ফরম্যাটে ট্রান্সলেশন ফাইল তৈরি এবং ব্যবহারের পদ্ধতি আলোচনা করব।


Symfony তে ট্রান্সলেশন সিস্টেম

Symfony-তে ট্রান্সলেশন সিস্টেমের জন্য Translation Component ব্যবহৃত হয়। এই সিস্টেমটি আপনার অ্যাপ্লিকেশনকে একাধিক ভাষায় কাজ করতে সক্ষম করে, এবং এটি Translation সার্ভিসের মাধ্যমে ভাষার অনুবাদ পরিচালনা করে।

Translation Component ইনস্টল করা

Symfony-এর Translation Component ইনস্টল করতে, আপনি Composer ব্যবহার করতে পারেন:

composer require symfony/translation

ট্রান্সলেশন ফাইল ফরম্যাট

Symfony বিভিন্ন ফরম্যাটে ট্রান্সলেশন ফাইল সমর্থন করে। এখানে আমরা XLIFF এবং YAML ফরম্যাটের ব্যবহার দেখব।


YAML ফরম্যাটে ট্রান্সলেশন

YAML ফরম্যাটটি Symfony তে ট্রান্সলেশন ফাইলের জন্য সবচেয়ে জনপ্রিয় এবং ব্যবহারকারী বান্ধব ফরম্যাট। এটি স্পষ্ট এবং পাঠযোগ্য, যা অনুবাদ পরিচালনা করা সহজ করে।

YAML ফরম্যাটে ট্রান্সলেশন ফাইল তৈরি করা

  1. প্রথমে, translations/ ডিরেক্টরিতে একটি YAML ফাইল তৈরি করুন। উদাহরণস্বরূপ, ইংরেজি এবং ফরাসি ভাষার জন্য ফাইল তৈরি করা:
  • translations/messages.en.yaml:

    hello: "Hello, how are you?"
    goodbye: "Goodbye and take care!"
    
  • translations/messages.fr.yaml:

    hello: "Bonjour, comment ça va ?"
    goodbye: "Au revoir et prenez soin de vous !"
    
  1. Symfony তে ট্রান্সলেশন ফাইলগুলি messages নামক ডিফল্ট ক্যাটেগরিতে থাকবে, তবে আপনি চাইলে আলাদা ক্যাটেগরি বা ডোমেইন তৈরি করতে পারেন।

YAML ফরম্যাটে ট্রান্সলেশন ব্যবহার

Symfony তে YAML ফাইল থেকে ট্রান্সলেশন ব্যবহার করতে trans() মেথড ব্যবহার করা হয়। উদাহরণ:

use Symfony\Component\HttpFoundation\Response;
use Symfony\Contracts\Translation\TranslatorInterface;

public function index(TranslatorInterface $translator): Response
{
    $translatedText = $translator->trans('hello');
    return new Response($translatedText);
}

এখানে trans('hello') মেথড messages.en.yaml বা messages.fr.yaml ফাইল থেকে উপযুক্ত ভাষার অনুবাদ নিয়ে আসবে।


XLIFF ফরম্যাটে ট্রান্সলেশন

XLIFF (XML Localization Interchange File Format) ফরম্যাটটি আরও প্রফেশনাল অনুবাদের জন্য ব্যবহৃত হয় এবং এটি XML ভিত্তিক। XLIFF ফরম্যাটে ট্রান্সলেশন ফাইলগুলি বেশ কিছু বিশেষ বৈশিষ্ট্য প্রদান করে, যেমন প্লেসহোল্ডার, কনটেক্সট, ইত্যাদি।

XLIFF ফরম্যাটে ট্রান্সলেশন ফাইল তৈরি করা

  1. XLIFF ফাইল সাধারণত .xlf এক্সটেনশন সহ থাকে। Symfony তে XLIFF ফাইল তৈরি করতে, translations/ ডিরেক্টরিতে একটি .xlf ফাইল তৈরি করতে হবে।
  • translations/messages.en.xlf:

    <?xml version="1.0" encoding="UTF-8"?>
    <xliff version="1.2">
        <file source-language="en" target-language="fr">
            <body>
                <trans-unit id="1">
                    <source>Hello, how are you?</source>
                    <target>Bonjour, comment ça va ?</target>
                </trans-unit>
                <trans-unit id="2">
                    <source>Goodbye and take care!</source>
                    <target>Au revoir et prenez soin de vous !</target>
                </trans-unit>
            </body>
        </file>
    </xliff>
    
  1. XLIFF ফাইল XML ভিত্তিক হওয়ায় এটি অনেক বেশি কনফিগারযোগ্য এবং স্থানীয়করণের জন্য ব্যবহৃত হয় যেখানে আরও উন্নত বৈশিষ্ট্য প্রয়োজন।

XLIFF ফরম্যাটে ট্রান্সলেশন ব্যবহার

Symfony তে XLIFF ফাইল ব্যবহার করতে একইভাবে trans() মেথড ব্যবহার করা হয়, তবে XLIFF ফাইলের ডেটা Symfony দ্বারা XML ফরম্যাটে পড়া হয়।

use Symfony\Component\HttpFoundation\Response;
use Symfony\Contracts\Translation\TranslatorInterface;

public function index(TranslatorInterface $translator): Response
{
    $translatedText = $translator->trans('hello');
    return new Response($translatedText);
}

এখানে, trans('hello') XLIFF ফাইল থেকে সংশ্লিষ্ট অনুবাদ বের করবে।


কনফিগারেশন এবং ব্যবস্থাপনা

Symfony-তে Translation ব্যবহারের জন্য আপনার config/packages/translation.yaml ফাইলে সঠিক কনফিগারেশন সেট করতে হয়:

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

এখানে:

  • default_path: এটি আপনার ট্রান্সলেশন ফাইলের পাথ নির্দেশ করে।
  • fallbacks: এটি ব্যাকআপ ভাষা নির্ধারণ করে, যদি নির্বাচিত ভাষার জন্য কোনো অনুবাদ না পাওয়া যায়।

মাল্টি-ল্যাঙ্গুয়েজ সাপোর্ট

Symfony ট্রান্সলেশন সিস্টেম একাধিক ভাষা সমর্থন করে। আপনি একাধিক ভাষার ট্রান্সলেশন ফাইল তৈরি করতে পারেন এবং Symfony locale দ্বারা সেগুলির মধ্যে সুইচ করতে পারে।

ভাষা পরিবর্তন করা:

Symfony তে ভাষা পরিবর্তন করতে, আপনি $translator->setLocale() মেথড ব্যবহার করতে পারেন:

$translator->setLocale('fr');
$translatedText = $translator->trans('hello');

এটি messages.fr.yaml অথবা messages.fr.xlf ফাইল থেকে অনুবাদ নিয়ে আসবে।


ট্রান্সলেশন ফাইলের কাস্টমাইজেশন এবং অন্যান্য ফরম্যাট

Symfony আরও কিছু ফরম্যাট সমর্থন করে, যেমন PHP ফাইল অথবা CSV ফাইল। তবে, XLIFF এবং YAML ফরম্যাট সবচেয়ে জনপ্রিয় এবং ব্যবহৃত হয়, বিশেষ করে বৃহত্তর প্রজেক্টে।


সারাংশ

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

Content added By

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

Symfony একটি আন্তর্জাতিকীকরণ (i18n) এবং স্থানীয়করণ (l10n) ফ্রেমওয়ার্ক হিসেবে কাজ করতে পারে, যা অ্যাপ্লিকেশনকে বিভিন্ন ভাষায় অনুবাদ এবং কনফিগারেশন পরিবর্তনের জন্য সহজ করে তোলে। লোকেল (Locale) এবং ভাষা পরিবর্তন ব্যবহারকারীদের তাদের পছন্দ অনুযায়ী অ্যাপ্লিকেশন কনফিগার করতে সাহায্য করে।

Locale এবং ভাষা পরিবর্তন:

  1. Locale:
    Locale একটি সংস্কৃতির এবং ভাষার সংমিশ্রণ যা ভাষা এবং অঞ্চল (দেশ) নির্দেশ করে। যেমন en_US (ইংরেজি ভাষা, যুক্তরাষ্ট্র), fr_FR (ফরাসি ভাষা, ফ্রান্স)।
  2. ভাষা পরিবর্তন (Language Switching):
    Symfony অ্যাপ্লিকেশনে ভাষা পরিবর্তন করার মাধ্যমে আপনি ব্যবহারকারীকে তাদের পছন্দসই ভাষায় অ্যাপ্লিকেশন প্রদর্শন করতে পারেন।

Symfony তে লোকেল কনফিগারেশন

Symfony তে লোকেল কনফিগারেশন config/packages/translator.yaml ফাইলে সেট করা হয় এবং এটি locale কনফিগারেশন ব্যবহার করে অ্যাপ্লিকেশনটির ভাষা নির্ধারণ করে।

1. লোকেল কনফিগারেশন সেট করা

Symfony অ্যাপ্লিকেশনে লোকেল কনফিগার করার জন্য, আপনাকে config/packages/framework.yaml ফাইলের মধ্যে লোকেল সেট করতে হবে।

# config/packages/framework.yaml
framework:
    translator:
        default_path: '%kernel.project_dir%/translations'
    default_locale: en
    # বা নির্দিষ্ট দেশও সেট করা যেতে পারে
    locale: en_US

এখানে, default_locale হলো অ্যাপ্লিকেশনের ডিফল্ট ভাষা। আপনি en_US, fr_FR বা যে কোন লোকেল সেট করতে পারেন।

2. স্থানীয় ভাষার জন্য অনুবাদ ফাইল

Symfony-তে ভাষা পরিবর্তন করতে হলে আপনাকে অনুবাদ ফাইল (translation files) তৈরি করতে হবে, যা translations/ ফোল্ডারে রাখা হয়। অনুবাদ ফাইলগুলি YAML, XLIFF, CSV ইত্যাদি ফরম্যাটে থাকতে পারে।

অনুবাদ ফাইলের উদাহরণ (translations/messages.en.yaml):

# translations/messages.en.yaml
hello:
    welcome: "Welcome to Symfony"

অনুবাদ ফাইলের উদাহরণ (translations/messages.fr.yaml):

# translations/messages.fr.yaml
hello:
    welcome: "Bienvenue sur Symfony"

এখানে messages.en.yaml ফাইলটি ইংরেজি ভাষার জন্য এবং messages.fr.yaml ফাইলটি ফরাসি ভাষার জন্য।


ভাষা পরিবর্তন করার প্রক্রিয়া

Symfony তে ব্যবহারকারীকে ভাষা পরিবর্তন করার সুযোগ দিতে হলে, Request অবজেক্টের মাধ্যমে লোকেল সেট করা যেতে পারে।

1. লোকেল পরিবর্তনের জন্য কাস্টম কন্ট্রোলার

// src/Controller/LanguageController.php
namespace App\Controller;

use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;

class LanguageController extends AbstractController
{
    /**
     * @Route("/language/{_locale}", name="change_language", requirements={"_locale"="en|fr"})
     */
    public function changeLanguage(Request $request, $_locale): RedirectResponse
    {
        // লোকেল পরিবর্তন
        $this->get('session')->set('_locale', $_locale);

        // রিডিরেক্ট
        return $this->redirect($request->getUri());
    }
}

এখানে, $_locale প্যারামিটার দিয়ে URL প্যারামিটার হিসেবে ভাষা গ্রহণ করা হচ্ছে, এবং এটি session এ সেট করা হচ্ছে।

2. রাউটের মাধ্যমে ভাষা পরিবর্তন

এটি URL এর মাধ্যমে ভাষা পরিবর্তন করতে সহায়ক। উদাহরণস্বরূপ:

/language/en  -> ইংরেজি ভাষা
/language/fr  -> ফরাসি ভাষা

3. সেশনে লোকেল সংরক্ষণ

Symfony তে লোকেল session এর মাধ্যমে সংরক্ষিত থাকে। এই কোডের মাধ্যমে আপনি সেশনে ভাষা সংরক্ষণ করতে পারবেন:

// ফ্রেমওয়ার্ক কনফিগারেশন (config/packages/framework.yaml)
framework:
    default_locale: en
    translator:
        fallbacks:
            - en

এটি অ্যাপ্লিকেশনটি সর্বদা en ভাষায় শুরু হবে এবং তারপর সেশন বা ইউজারের পছন্দ অনুসারে পরিবর্তিত হবে।


টেমপ্লেট (Twig) এ ভাষা ব্যবহার

Symfony তে Twig টেমপ্লেট ইঞ্জিন ব্যবহার করে আপনি অনুবাদ দেখতে পারেন এবং ভাষার পরিবর্তন ব্যবহার করতে পারেন। আপনি trans ফাংশন ব্যবহার করে অনুবাদ টেমপ্লেটে দেখাতে পারেন।

{# templates/default/index.html.twig #}
<h1>{{ 'hello.welcome'|trans }}</h1>

এখানে hello.welcome অনুবাদটি messages.en.yaml বা messages.fr.yaml ফাইলে অনুসন্ধান করা হবে, এবং ভাষা পরিবর্তনের উপর ভিত্তি করে সঠিক অনুবাদ প্রদর্শিত হবে।


টেমপ্লেট এবং URL এ ভাষা পরিবর্তন

Symfony তে আপনি URL এ ভাষা পরিবর্তন করতে পারেন। উদাহরণস্বরূপ, ব্যবহারকারী যদি ইংরেজি ভাষায় একটি পৃষ্ঠা দেখতে চান, তবে তারা এমন একটি URL ব্যবহার করবে:

/en/some-page

এটি Symfony Routing-এ ভাষা পরিবর্তন এবং Locale সেট করতে সাহায্য করবে।

routes.yaml উদাহরণ:

# config/routes.yaml
app_home:
  path: /{_locale}/home
  defaults:
    _controller: App\Controller\HomeController::index
  requirements:
    _locale: en|fr

এটি URL এর মাধ্যমে locale পরিবর্তন করতে সাহায্য করবে।


Symfony তে লোকেল এবং ভাষা পরিবর্তন সম্পর্কে সারাংশ

Symfony তে Locale এবং ভাষা পরিবর্তন ব্যবহার করে আপনি আপনার অ্যাপ্লিকেশনটিকে বিভিন্ন ভাষায় অনুবাদ এবং আন্তর্জাতিকীকরণ করতে পারেন। locale কনফিগারেশন, অনুবাদ ফাইল (YAML, XLIFF, CSV), এবং session ব্যবহার করে সহজেই ভাষা পরিবর্তন করা সম্ভব। Twig টেমপ্লেটে trans() ফাংশন ব্যবহার করে আপনি ভাষার অনুবাদ সহ অ্যাপ্লিকেশন তৈরি করতে পারেন। Symfony এ লোকেল এবং ভাষা পরিবর্তন সহজভাবে পরিচালনা করা যায় এবং এটি ব্যবহারকারীর অভিজ্ঞতা উন্নত করে।

Content added By
Promotion

Are you sure to start over?

Loading...