Internationalization (i18n) Struts 2 এর একটি গুরুত্বপূর্ণ বৈশিষ্ট্য যা আপনার অ্যাপ্লিকেশনকে বিভিন্ন ভাষায় ব্যবহারযোগ্য করে তোলে। এটি ব্যবহারকারীর লোকেশন বা ভাষা অনুযায়ী কনটেন্ট প্রদর্শন করতে সাহায্য করে, যেমন বাংলা, ইংরেজি, ফরাসি ইত্যাদি। Struts 2-এ i18n কনফিগারেশন সহজে করা যায়, যা আপনি .properties ফাইলের মাধ্যমে কনফিগার করে কাস্টম মেসেজ প্রদর্শন করতে পারেন।
1. i18n কী?
Internationalization (i18n) একটি প্রক্রিয়া যেখানে আপনি একটি অ্যাপ্লিকেশন তৈরি করেন যাতে সেটি বিভিন্ন ভাষায় স্থানীয়করণ (localization) করা যায়। i18n এর মাধ্যমে, আপনি অ্যাপ্লিকেশনটি একাধিক ভাষায় ব্যবহার করতে পারবেন এবং আপনার ইউজার ইন্টারফেসে ব্যবহৃত টেক্সট ও মেসেজগুলি ভাষাভিত্তিক পরিবর্তন করতে পারবেন।
Struts 2 i18n সমর্থন করার জন্য ResourceBundle ব্যবহার করে properties files তৈরি করা হয়, যা আপনার অ্যাপ্লিকেশনের ভাষা নির্ধারণ করে।
2. i18n কনফিগারেশন ফাইল
Struts 2-এ i18n কনফিগারেশন করতে আপনাকে struts.xml, messages.properties, এবং অন্যান্য ভাষার জন্য আলাদা messages_xx.properties ফাইল তৈরি করতে হয়।
1. messages.properties (default language)
এটি আপনার ডিফল্ট ভাষার মেসেজ ফাইল, যেমন ইংরেজি।
# messages.properties
welcome.message=Welcome to Struts 2 Example!
login.error=Invalid username or password.
- welcome.message এবং login.error ডিফল্ট মেসেজগুলি যা ইংরেজিতে থাকবে।
2. messages_bn.properties (for Bengali)
এটি বাংলার জন্য আলাদা মেসেজ ফাইল, যেখানে আপনি বাংলায় টেক্সট লিখবেন।
# messages_bn.properties
welcome.message=স্ট্রাটস ২ উদাহরণে স্বাগতম!
login.error=অবৈধ ব্যবহারকারীর নাম বা পাসওয়ার্ড।
- welcome.message এবং login.error বাংলায় থাকবে।
3. struts.xml কনফিগারেশন
Struts 2 কনফিগারেশন ফাইলে, আপনি i18n এর জন্য struts.i18n.properties.file প্রপার্টি নির্ধারণ করতে পারেন এবং এতে default locale এবং resource bundles সংযুক্ত করতে পারেন।
<struts>
<package name="default" extends="struts-default">
<!-- Enable Internationalization (i18n) -->
<action name="login" class="com.example.LoginAction">
<result>/login.jsp</result>
</action>
</package>
</struts>
- এখানে, i18n কনফিগারেশন করার জন্য অতিরিক্ত কিছু পরিবর্তন করা হয়েছে যা আপনার অ্যাপ্লিকেশনের জন্য প্রাসঙ্গিক হতে পারে।
3. Struts 2 Action Class
Action ক্লাসে আপনি ResourceBundle বা Locale ব্যবহার করে ভাষা অনুযায়ী মেসেজ প্রদর্শন করতে পারেন।
LoginAction.java:
package com.example;
import com.opensymphony.xwork2.ActionSupport;
public class LoginAction extends ActionSupport {
private String username;
private String password;
// Getter and Setter for 'username' and 'password'
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
// Execute method to handle login
public String execute() {
if ("admin".equals(username) && "admin".equals(password)) {
return SUCCESS;
} else {
addActionError(getText("login.error"));
return ERROR;
}
}
}
- getText("login.error"): এখানে,
getText()মেথডটি i18n প্রপার্টি ফাইল থেকে login.error মেসেজটি ডায়নামিকভাবে গ্রহণ করবে, যা আপনি ডিফল্ট ফাইলে বা বাংলায় নির্ধারণ করেছেন।
4. JSP পৃষ্ঠা (login.jsp)
JSP পৃষ্ঠায় আপনি struts-tags ব্যবহার করে ভাষাভিত্তিক মেসেজ ডায়নামিকভাবে দেখাতে পারবেন।
<%@ taglib uri="/struts-tags" prefix="s" %>
<html>
<head>
<title><s:text name="welcome.message" /></title>
</head>
<body>
<h2><s:text name="welcome.message" /></h2>
<s:form action="login" method="post">
<s:textfield name="username" label="Username" />
<s:password name="password" label="Password" />
<s:submit value="Login" />
</s:form>
<s:actionerror/>
</body>
</html>
- <s:text>:
s:textট্যাগ ব্যবহার করে আপনি i18n প্রপার্টি ফাইল থেকে টেক্সট প্রোপার্টি মুছে দেবেন, যা স্থানীয় ভাষায় প্রদর্শিত হবে।
5. Locale-Dependent Configuration
Struts 2 Locale এর উপর ভিত্তি করে বিভিন্ন ভাষার মেসেজ দেখাতে পারে। আপনি ডিফল্ট ভাষার পাশাপাশি, অন্যান্য ভাষার জন্য টেমপ্লেট তৈরি করতে পারেন, যেমন বাংলার জন্য messages_bn.properties। ব্যবহারকারী যখন নির্দিষ্ট ভাষা নির্বাচন করবে, তখন Struts 2 সেই ভাষার মেসেজগুলি প্রদর্শন করবে।
web.xml ফাইলের মধ্যে locale এর জন্য কনফিগারেশন:
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<session-config>
<session-timeout>30</session-timeout>
</session-config>
<servlet>
<servlet-name>struts2</servlet-name>
<servlet-class>org.apache.struts2.dispatcher.FilterDispatcher</servlet-class>
</servlet>
6. Locale Switching
Struts 2-এ আপনি ব্যবহারকারীকে ভাষা পরিবর্তন করতে পারবেন, যেমন ইংরেজি থেকে বাংলা বা অন্য ভাষায়। এর জন্য Locale পরিবর্তনের জন্য কিছু কনফিগারেশন করতে হবে। Struts 2 ডিফল্ট ভাবে ইউজারের ভাষা অনুযায়ী কনটেন্ট প্রদান করে।
struts.xml কনফিগারেশন:
<action name="changeLanguage" class="com.example.LocaleAction">
<result>/home.jsp</result>
</action>
LocaleAction.java:
package com.example;
import com.opensymphony.xwork2.ActionSupport;
import java.util.Locale;
public class LocaleAction extends ActionSupport {
private String language;
private String country;
// Getter and Setter for language and country
public String getLanguage() {
return language;
}
public void setLanguage(String language) {
this.language = language;
}
public String getCountry() {
return country;
}
public void setCountry(String country) {
this.country = country;
}
// Method to change locale
public String execute() {
Locale.setDefault(new Locale(language, country));
return SUCCESS;
}
}
সারাংশ
Struts 2 i18n সিস্টেম ব্যবহার করে আপনি আপনার অ্যাপ্লিকেশনটিকে বহুভাষী (multilingual) করতে পারেন। Resource Bundle এবং OGNL ব্যবহার করে, আপনি অ্যাপ্লিকেশনে ব্যবহৃত মেসেজ এবং অন্যান্য টেক্সটকে বিভিন্ন ভাষায় অনুবাদ করতে পারবেন। Struts 2-এ i18n কনফিগারেশন খুবই সহজ এবং এটি ইউজারদের জন্য একটি মাল্টি-ল্যাঙ্গুয়েজ অ্যাপ্লিকেশন তৈরি করতে সহায়তা করে, যার ফলে বিভিন্ন দেশের ব্যবহারকারীরা তাদের ভাষায় অ্যাপ্লিকেশন ব্যবহার করতে পারেন।
Read more