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

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

195

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
Promotion

Are you sure to start over?

Loading...