Symfony একটি আন্তর্জাতিকীকরণ (i18n) এবং স্থানীয়করণ (l10n) ফ্রেমওয়ার্ক হিসেবে কাজ করতে পারে, যা অ্যাপ্লিকেশনকে বিভিন্ন ভাষায় অনুবাদ এবং কনফিগারেশন পরিবর্তনের জন্য সহজ করে তোলে। লোকেল (Locale) এবং ভাষা পরিবর্তন ব্যবহারকারীদের তাদের পছন্দ অনুযায়ী অ্যাপ্লিকেশন কনফিগার করতে সাহায্য করে।
Locale এবং ভাষা পরিবর্তন:
- Locale:
Locale একটি সংস্কৃতির এবং ভাষার সংমিশ্রণ যা ভাষা এবং অঞ্চল (দেশ) নির্দেশ করে। যেমনen_US(ইংরেজি ভাষা, যুক্তরাষ্ট্র),fr_FR(ফরাসি ভাষা, ফ্রান্স)। - ভাষা পরিবর্তন (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 এ লোকেল এবং ভাষা পরিবর্তন সহজভাবে পরিচালনা করা যায় এবং এটি ব্যবহারকারীর অভিজ্ঞতা উন্নত করে।
Read more