Apache Tapestry Localization (লোকালাইজেশন) এবং Internationalization (আইন্টারন্যাশনালাইজেশন) এর মাধ্যমে আপনার অ্যাপ্লিকেশনকে একাধিক ভাষায় সমর্থন দেয়ার ব্যবস্থা সহজে করতে পারে। এটি বিশেষভাবে উপকারী যখন আপনার অ্যাপ্লিকেশনটি বিভিন্ন অঞ্চলে ব্যবহারকারীদের জন্য উপলব্ধ হবে এবং বিভিন্ন ভাষায় কনটেন্ট প্রদর্শন করতে হবে।
Tapestry তে Resource Bundles ব্যবহার করে ভাষা পরিবর্তন (language switching) করা যায়, যাতে ব্যবহারকারীরা তাদের পছন্দের ভাষায় অ্যাপ্লিকেশনটি ব্যবহার করতে পারেন।
এই টিউটোরিয়ালে, আমরা দেখব কীভাবে Tapestry তে Resource Bundle ব্যবহার করে ভাষা পরিবর্তন করা যায়।
Resource Bundles হল Java অ্যাপ্লিকেশনগুলির জন্য একটি স্ট্যান্ডার্ড কনফিগারেশন ফাইল যা ভাষা নির্ধারণকারী স্ট্রিং মান এবং লেবেল রাখে। এগুলি সাধারণত .properties ফাইলের মধ্যে থাকে, এবং প্রতিটি ভাষার জন্য আলাদা ফাইল ব্যবহার করা হয়।
উদাহরণ:
প্রথমে আপনাকে একটি Resource Bundle তৈরি করতে হবে যেখানে আপনি আপনার অ্যাপ্লিকেশনের সব ভাষার স্ট্রিং সংরক্ষণ করবেন।
greeting=Welcome
loginMessage=Please log in to continue
greeting=স্বাগতম
loginMessage=কন্টিনিউ করতে লগইন করুন
এই properties ফাইল দুটি Tapestry-এর resource bundle হিসেবে কাজ করবে এবং অ্যাপ্লিকেশন ভাষার উপর ভিত্তি করে স্ট্রিং মান প্রদান করবে।
Tapestry এ ভাষার পরিবর্তন করতে এবং Resource Bundle ব্যবহার করতে আপনাকে @Messages
অ্যানোটেশন ব্যবহার করতে হবে। এই অ্যানোটেশনটি আপনাকে কনফিগারেশন ফাইলের স্ট্রিং মানগুলি অ্যাক্সেস করতে সাহায্য করবে।
package com.example.pages;
import org.apache.tapestry5.annotations.Messages;
import org.apache.tapestry5.annotations.Property;
public class Home {
@Messages
private ResourceBundle messages; // Inject the resource bundle
@Property
private String greetingMessage;
public void setupRender() {
greetingMessage = messages.get("greeting"); // Fetch greeting message from resource bundle
}
}
greeting
কী ব্যবহার করে ইংরেজি বা বাংলা ভাষায় স্ট্রিং মান পাওয়া যাবে।<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_3.xsd">
<head>
<title>Home</title>
</head>
<body>
<h1><t:property value="greetingMessage" /></h1> <!-- Display greeting message -->
</body>
</html>
এখানে:
<t:property value="greetingMessage" />
: এটি পেজের মধ্যে greetingMessage প্রপার্টি প্রদর্শন করবে, যা Resource Bundle থেকে পাওয়া মান।Tapestry তে ভাষা পরিবর্তন করতে Locale
ব্যবহার করা হয়। আপনার পেজ বা কম্পোনেন্টে ব্যবহারকারী যখন ভাষা পরিবর্তন করবে, তখন এটি সেই ভাষার জন্য নির্ধারিত Resource Bundle ব্যবহার করবে।
package com.example.components;
import org.apache.tapestry5.annotations.Property;
import org.apache.tapestry5.services.ComponentClassTransformWorker;
import org.apache.tapestry5.ioc.annotations.Inject;
import org.apache.tapestry5.ioc.annotations.UsesJavaScript;
public class LanguageSwitcher {
@Inject
private org.apache.tapestry5.services.LocaleChanger localeChanger;
@Property
private String selectedLanguage;
public void onChangeLanguage() {
if ("en".equals(selectedLanguage)) {
localeChanger.changeLocale("en");
} else if ("bn".equals(selectedLanguage)) {
localeChanger.changeLocale("bn");
}
}
}
<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_3.xsd">
<head>
<title>Language Switcher</title>
</head>
<body>
<form>
<t:select t:id="languageSelect" value="selectedLanguage">
<t:option value="en">English</t:option>
<t:option value="bn">বাংলা</t:option>
</t:select>
<t:button t:id="switchButton" value="Switch Language" />
</form>
</body>
</html>
<t:select>
: ড্রপডাউন মেনু তৈরি করে যাতে ব্যবহারকারী ইংরেজি বা বাংলা ভাষা নির্বাচন করতে পারেন।<t:button>
: একটি বাটন যা ভাষা পরিবর্তন করার জন্য ব্যবহার করা হবে।Tapestry এর LocaleChanger সার্ভিসের মাধ্যমে ব্যবহারকারী যখন একটি ভাষা নির্বাচন করবে, তখন তা স্বয়ংক্রিয়ভাবে সিস্টেমের Locale পরিবর্তন করবে এবং পেজে নতুন ভাষায় কনটেন্ট প্রদর্শিত হবে।
Tapestry-তে Multi-language Support এবং Resource Bundle ব্যবহার করে ভাষা পরিবর্তন একটি শক্তিশালী বৈশিষ্ট্য। আপনি .properties ফাইল ব্যবহার করে একাধিক ভাষার জন্য স্ট্রিং মান সংরক্ষণ করতে পারেন এবং Tapestry এর @Messages অ্যানোটেশন এবং LocaleChanger সার্ভিস ব্যবহার করে ভাষা পরিবর্তন করতে পারেন। এটি আপনার অ্যাপ্লিকেশনকে বিভিন্ন ভাষায় সমর্থন প্রদান করে, যা আন্তর্জাতিকীকরণ (Internationalization) এবং লোকালাইজেশন (Localization) প্রক্রিয়াকে সহজ করে তোলে।