Java Web Applications এ আন্তর্জাতিকীকরণ (i18n) ব্যবহার করার মাধ্যমে অ্যাপ্লিকেশনগুলিকে বিভিন্ন ভাষা ও অঞ্চল অনুযায়ী অভিযোজিত করা সম্ভব। এটি বিশেষত Java Servlets এবং JavaServer Pages (JSP) ব্যবহার করার সময় গুরুত্বপূর্ণ, যেখানে বিভিন্ন রিসোর্স এবং কনটেন্ট লোকেল অনুযায়ী প্রদর্শিত হয়। এখানে আমরা আলোচনা করব কিভাবে Java Web Applications এ i18n বাস্তবায়ন করা যায়।
Java Web Applications এ i18n বাস্তবায়নের ধাপসমূহ:
- Locale নির্ধারণ:
- ওয়েব অ্যাপ্লিকেশনটি যে ভাষায় চলবে তা নির্ধারণ করতে Locale অবজেক্ট ব্যবহার করা হয়।
- ব্যবহারকারী তাদের পছন্দমত ভাষা নির্বাচন করলে, সেটি নির্ধারণ করে অ্যাপ্লিকেশনটি সেই ভাষায় কাজ করবে।
- Resource Bundles ব্যবহার:
- ওয়েব অ্যাপ্লিকেশনে বিভিন্ন ভাষার জন্য Resource Bundles ব্যবহার করা হয়, যেখানে বিভিন্ন ভাষার স্ট্রিংগুলি আলাদা ফাইলগুলিতে সংরক্ষিত থাকে।
- উদাহরণ:
messages_en.properties— ইংরেজিmessages_fr.properties— ফ্রেঞ্চ
- ফাইলের মধ্যে key-value পেয়ার থাকে, যেখানে কী (key) একটি নির্দিষ্ট স্ট্রিং এবং মান (value) সেই স্ট্রিংয়ের অনুবাদ।
- Web.xml কনফিগারেশন:
web.xmlফাইলে i18n কনফিগারেশন করে ওয়েব অ্যাপ্লিকেশনটি কোন ভাষায় কাজ করবে তা নির্ধারণ করা হয়।উদাহরণ:
<locale-config> <default-locale>en</default-locale> </locale-config>
- JSP পেজে ResourceBundle ব্যবহার:
- JSP পেজে
ResourceBundleঅবজেক্ট ব্যবহার করে বিভিন্ন ভাষার স্ট্রিং লোড করা হয়। উদাহরণ:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <c:set var="bundle" value="${fn:escapeXml(resourceBundle['messages'])}" /> <h1>${bundle['welcomeMessage']}</h1>
- JSP পেজে
- Servlet এ Locale সেট করা:
- ওয়েব অ্যাপ্লিকেশনটির Servlet এ ব্যবহারকারীর পছন্দ অনুযায়ী Locale সেট করা হয়। এটি সাধারণত ব্যবহারকারীর HTTP রিকুয়েস্ট থেকে প্রাপ্ত হয় এবং request.setAttribute ব্যবহার করে বর্তমান Locale সেট করা হয়।
উদাহরণ:
Locale locale = request.getLocale(); ResourceBundle bundle = ResourceBundle.getBundle("messages", locale); request.setAttribute("bundle", bundle);
- স্ট্রিং ফরম্যাটিং:
MessageFormatক্লাস ব্যবহার করে ডাইনামিক বার্তা ফরম্যাট করা যায়, যেখানে চলমান তথ্য (যেমন ব্যবহারকারীর নাম, সংখ্যা ইত্যাদি) পাঠানো হয়।উদাহরণ:
String message = MessageFormat.format(bundle.getString("greeting"), username); request.setAttribute("greeting", message);
- নির্দিষ্ট ভাষার ফাইলের মধ্যে কন্টেন্ট লোড করা:
- প্রতিটি ভাষার জন্য আলাদা ফাইল (যেমন
messages_en.properties,messages_fr.properties) তৈরি করে তাদের মধ্যে স্ট্রিং মান সংরক্ষণ করতে হবে। - উদাহরণ:
messages_en.properties:greeting=Hello, {0}! welcomeMessage=Welcome to our site!messages_fr.properties:greeting=Bonjour, {0}! welcomeMessage=Bienvenue sur notre site!
- প্রতিটি ভাষার জন্য আলাদা ফাইল (যেমন
Example: Java Web Application এর মাধ্যমে i18n বাস্তবায়ন
1. ResourceBundle ফাইল তৈরি (messages_en.properties, messages_fr.properties):
messages_en.properties:
greeting=Hello, {0}! welcomeMessage=Welcome to our website!messages_fr.properties:
greeting=Bonjour, {0}! welcomeMessage=Bienvenue sur notre site Web!
2. Servlet (Locale সেট করা এবং ResourceBundle ব্যবহার করা):
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.util.*;
public class LocaleServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
Locale locale = request.getLocale();
ResourceBundle bundle = ResourceBundle.getBundle("messages", locale);
String username = "John Doe"; // Example username
String greetingMessage = MessageFormat.format(bundle.getString("greeting"), username);
request.setAttribute("greeting", greetingMessage);
request.getRequestDispatcher("/welcome.jsp").forward(request, response);
}
}
3. JSP পেজ (welcome.jsp) ব্যবহার করা:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<html>
<head>
<title>Internationalization Example</title>
</head>
<body>
<h1>${greeting}</h1>
<p>${bundle['welcomeMessage']}</p>
</body>
</html>
সারাংশ:
Java Web Applications এ i18n ব্যবহারের মাধ্যমে আপনার অ্যাপ্লিকেশনকে একাধিক ভাষা এবং সংস্কৃতি অনুযায়ী অভিযোজিত করা সম্ভব। Servlets এবং JSP ব্যবহার করে এটি কার্যকরভাবে বাস্তবায়ন করা যায়, যেখানে বিভিন্ন রিসোর্স ফাইল ব্যবহার করে ভাষার স্ট্রিংগুলি নির্ধারণ করা হয় এবং Locale অবজেক্টের মাধ্যমে ভাষা নির্বাচন করা হয়। web.xml কনফিগারেশন, ResourceBundle, এবং JSP ট্যাগলাইব্রেরি ব্যবহারের মাধ্যমে i18n সমর্থনকারী ওয়েব অ্যাপ্লিকেশন তৈরি করা হয়।
জাভা ইন্টারন্যাশনালাইজেশন (i18n) হল এমন একটি প্রক্রিয়া, যার মাধ্যমে অ্যাপ্লিকেশনগুলিকে একাধিক ভাষা এবং অঞ্চল অনুযায়ী কাস্টমাইজ করা যায়। এতে ব্যবহারকারীদের ভাষা, স্থান এবং সাংস্কৃতিক পরিপ্রেক্ষিত অনুযায়ী প্রাসঙ্গিক কনটেন্ট দেখানো হয়।
Java Servlets এবং JSP (JavaServer Pages)-এ Locale Handling হল এমন একটি প্রক্রিয়া যা সার্ভার-সাইড অ্যাপ্লিকেশনগুলিকে একাধিক ভাষা এবং অঞ্চল অনুযায়ী কনটেন্ট প্রদান করতে সাহায্য করে।
Java Servlets এবং JSP তে Locale Handling এর প্রক্রিয়া
- Locale ইনফরমেশন প্রাপ্তি:
- Locale হল একটি ক্লাস যা একটি নির্দিষ্ট ভাষা, অঞ্চল এবং সংস্কৃতির সেটিংস নির্ধারণ করে।
- Locale কনফিগারেশন বিভিন্ন ধরনের অপারেশন (যেমন ভাষা, দেশ, কালচার) নির্ধারণ করতে ব্যবহৃত হয়।
Locale সনাক্তকরণ (Detection) এবং সেট করা:
- Servlet এবং JSP অ্যাপ্লিকেশনগুলি স্বয়ংক্রিয়ভাবে ইউজারের লোকাল ঠিক করতে পারে এবং সেই অনুযায়ী কনটেন্ট প্রদর্শন করতে পারে।
Locale ডিফল্ট সেটিং:
- ডিফল্টভাবে, Locale সাধারণত ক্লায়েন্টের ব্রাউজার সেটিংস থেকে নেওয়া হয়।
Locale সেট করা Servlet এ:
Locale locale = request.getLocale(); // ইউজারের ব্রাউজারের লোকাল তথ্য নেয়- Locale পাওয়ার পর, অ্যাপ্লিকেশন ব্যবহারকারীকে সংশ্লিষ্ট ভাষায় কনটেন্ট দেখাতে সক্ষম হয়।
- JSP তে Locale Handling:
- JSP ফাইলগুলিতে
pageডিরেকটিভ ব্যবহার করে ভাষা এবং লোকাল কনফিগারেশন করা যেতে পারে। উদাহরণ:
<%@ page contentType="text/html; charset=UTF-8" language="en" %> <html> <body> <h1><fmt:message key="welcome_message" /></h1> </body> </html>
- JSP ফাইলগুলিতে
- Resource Bundles:
- Java Servlets এবং JSP-তে স্থানিক কনটেন্ট (যেমন স্ট্রিং) সংরক্ষণের জন্য Resource Bundles ব্যবহার করা হয়।
- Resource Bundle একটি ক্লাস যা বিভিন্ন ভাষার জন্য কনটেন্ট ধারণ করে এবং লোকাল অনুসারে উপযুক্ত কনটেন্ট রিটার্ন করে।
- উদাহরণ:
- messages_en.properties (ইংরেজি)
- messages_fr.properties (ফরাসি)
কোডে এর ব্যবহার:
ResourceBundle messages = ResourceBundle.getBundle("messages", locale); String welcomeMessage = messages.getString("welcome_message");এখানে messages হলো রিসোর্স ফাইল, যা বিভিন্ন ভাষায় অনুবাদিত কনটেন্ট রাখে।
- JSP তে Resource Bundle ব্যবহার:
JSP তে
fmt:messageট্যাগ ব্যবহার করে রিসোর্স ফাইল থেকে অনুবাদিত কনটেন্ট পাওয়া যায়:<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %> <fmt:message key="welcome_message"/>
- Locale এবং Language Preferences পরিবর্তন:
- ক্লায়েন্টের ভাষা বা অঞ্চল পরিবর্তন করতে হলে, Locale অবজেক্ট ব্যবহার করে নতুন লোকাল সেট করতে হয়।
উদাহরণ:
Locale locale = new Locale("fr", "FR"); // ফরাসি ভাষা, ফ্রান্স request.setAttribute("locale", locale);
- Locale Switching (লোকাল সুইচিং):
- ব্যবহারকারীরা সাইটের ভাষা পরিবর্তন করতে চাইলে, Locale পরিবর্তন করা হয়। এটি সাইটের বিভিন্ন পৃষ্ঠা বা সেশন অনুযায়ী কনটেন্ট প্রদর্শন করার জন্য প্রয়োজনীয়।
উদাহরণ:
Locale newLocale = new Locale("de", "DE"); // জার্মান ভাষা, জার্মানি session.setAttribute("locale", newLocale); response.sendRedirect("welcome.jsp");
উদাহরণ:
Servlet Example:
@WebServlet("/welcome")
public class WelcomeServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// Get locale from the request
Locale locale = request.getLocale();
// Load resource bundle based on locale
ResourceBundle messages = ResourceBundle.getBundle("messages", locale);
String welcomeMessage = messages.getString("welcome_message");
// Set the message in the request attribute and forward to the JSP
request.setAttribute("welcomeMessage", welcomeMessage);
RequestDispatcher dispatcher = request.getRequestDispatcher("/welcome.jsp");
dispatcher.forward(request, response);
}
}
JSP Example (welcome.jsp):
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<html>
<body>
<h1><fmt:message key="welcomeMessage" /></h1>
</body>
</html>
Java Servlets এবং JSP-এ Locale Handling-এর মাধ্যমে অ্যাপ্লিকেশনগুলো ভাষা এবং সাংস্কৃতিক বৈচিত্র্য অনুযায়ী কনটেন্ট প্রদর্শন করতে সক্ষম হয়। এটি ব্যবহারকারীদের জন্য একটি আরো ইন্টারন্যাশনাল এবং কাস্টমাইজড অভিজ্ঞতা প্রদান করে। Resource Bundles, Locale Objects এবং JSP Tags ব্যবহার করে এটি সহজেই বাস্তবায়ন করা সম্ভব।
Java Web Applications এ ইন্টারন্যাশনালাইজেশন (i18n) এর জন্য দুটি গুরুত্বপূর্ণ উপাদান হলো ResourceBundle এবং Locale Configuration। এগুলি ব্যবহৃত হয় অ্যাপ্লিকেশনটিকে বিভিন্ন ভাষা এবং সংস্কৃতির জন্য অভিযোজিত করার জন্য। এদের সাহায্যে, বিভিন্ন অঞ্চলের জন্য আলাদা কনফিগারেশন, স্ট্রিং, তারিখ, সংখ্যা ইত্যাদি সামঞ্জস্য করা হয়।
1. ResourceBundle:
ResourceBundle হল একটি ক্লাস যা জাভাতে আন্তর্জাতিককরণের জন্য ব্যবহৃত হয়। এটি locale নির্ভর রিসোর্সগুলি (যেমন স্ট্রিং, বার্তা, ছবি ইত্যাদি) সংরক্ষণ এবং লোড করতে সাহায্য করে। প্রতিটি Locale এর জন্য আলাদা রিসোর্স ফাইল তৈরি করা হয়।
ResourceBundle এর কাজ কীভাবে হয়:
ResourceBundle সাধারণত Properties File হিসেবে থাকে, যেখানে মূল কী এবং তার মান (value) দেওয়া থাকে। একাধিক প্রপার্টি ফাইল ব্যবহার করে আপনি বিভিন্ন ভাষার জন্য আলাদা কনটেন্ট সংরক্ষণ করতে পারেন।
উদাহরণ:
messages_en.properties(ইংরেজি)messages_fr.properties(ফরাসি)messages_bn.properties(বাংলা)
messages_en.properties:
greeting=Hello welcomeMessage=Welcome to the application!messages_fr.properties:
greeting=Bonjour welcomeMessage=Bienvenue dans l'application!messages_bn.properties:
greeting=হ্যালো welcomeMessage=অ্যাপ্লিকেশনে স্বাগতম!
কোডে ResourceBundle ব্যবহার:
import java.util.*;
public class InternationalizationExample {
public static void main(String[] args) {
Locale locale = new Locale("bn", "BD"); // বাংলা, বাংলাদেশ
ResourceBundle bundle = ResourceBundle.getBundle("messages", locale);
System.out.println(bundle.getString("greeting"));
System.out.println(bundle.getString("welcomeMessage"));
}
}
এখানে ResourceBundle.getBundle("messages", locale) এর মাধ্যমে উপযুক্ত locale অনুযায়ী প্রপার্টি ফাইলটি লোড করা হয়।
2. Locale Configuration:
Locale হল একটি ক্লাস যা একটি নির্দিষ্ট ভাষা এবং অঞ্চল বা সাংস্কৃতিক বৈশিষ্ট্য প্রতিনিধিত্ব করে। এটি বিভিন্ন ধরনের অঞ্চলের জন্য কাস্টমাইজড বার্তা প্রদর্শন করার জন্য ব্যবহৃত হয়।
Locale সেটআপ:
Locale ব্যবহারের মাধ্যমে আপনি নির্দিষ্ট ভাষা এবং অঞ্চলের জন্য কনফিগারেশন তৈরি করতে পারেন।
Locale তৈরি:
Locale locale = new Locale("bn", "BD"); // বাংলা, বাংলাদেশএটি বাংলা ভাষা এবং বাংলাদেশ অঞ্চল নির্বাচন করবে।
Locale এবং ResourceBundle ব্যবহার:
আপনি Locale ক্লাস ব্যবহার করে নির্দিষ্ট ভাষা ও অঞ্চলের জন্য ResourceBundle লোড করতে পারেন। উদাহরণস্বরূপ, যখন ইউজার বাংলা ভাষায় অ্যাপ্লিকেশন ব্যবহার করবে, তখন আপনাকে Locale সেট করতে হবে।
Web Application Configuration (Web.xml):
Java Web Application এর জন্য Locale কনফিগারেশন কিছু ক্ষেত্রে web.xml ফাইলে করা যেতে পারে, যেখানে আপনি ডিফল্ট ভাষা বা লোকাল সেট করতে পারেন।
web.xml এ Locale Filter কনফিগারেশন:
<filter>
<filter-name>localeFilter</filter-name>
<filter-class>org.springframework.web.filter.RequestContextFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>localeFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
এছাড়া, আপনি ব্যবহারকারীর ব্রাউজারের ভাষার উপর ভিত্তি করে অ্যাপ্লিকেশনটির Locale সেট করতে পারেন। Spring বা অন্যান্য Web Framework গুলিতে LocaleResolver ব্যবহার করে এটি করা সম্ভব।
Spring Framework এ LocaleResolver ব্যবহার:
@Bean
public LocaleResolver localeResolver() {
SessionLocaleResolver localeResolver = new SessionLocaleResolver();
localeResolver.setDefaultLocale(Locale.ENGLISH); // ডিফল্ট ভাষা
return localeResolver;
}
এছাড়া, LocaleChangeInterceptor ব্যবহার করে আপনি URL প্যারামিটার বা কুকি দিয়ে ব্যবহারকারীর ভাষা পরিবর্তন করতে পারেন।
@Bean
public LocaleChangeInterceptor localeChangeInterceptor() {
LocaleChangeInterceptor interceptor = new LocaleChangeInterceptor();
interceptor.setParamName("lang"); // URL প্যারামিটার নাম
return interceptor;
}
এখন, আপনি URL এর মধ্যে ?lang=fr বা ?lang=bn যোগ করে ভাষা পরিবর্তন করতে পারবেন।
3. Locale এবং ResourceBundle ব্যবহার Web Application-এ:
Java Web Application এ আপনি Locale এবং ResourceBundle ব্যবহার করে বিভিন্ন ভাষায় ডাইনামিকভাবে কন্টেন্ট প্রদর্শন করতে পারেন। এটি সাধারণত JSP বা Servlet এ করা হয়।
JSP উদাহরণ:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"%>
<%@ page import="java.util.*, java.text.*" %>
<%
Locale locale = request.getLocale(); // ইউজারের লোকাল
ResourceBundle bundle = ResourceBundle.getBundle("messages", locale);
%>
<html>
<head><title>Internationalization Example</title></head>
<body>
<h1><%= bundle.getString("greeting") %></h1>
<p><%= bundle.getString("welcomeMessage") %></p>
</body>
</html>
এখানে request.getLocale() ব্যবহার করে ব্যবহারকারীর লোকাল পাওয়া যায় এবং তার মাধ্যমে ResourceBundle থেকে ভাষানুযায়ী স্ট্রিংগুলি প্রদর্শিত হয়।
Java Web Application এ ResourceBundle এবং Locale Configuration ব্যবহার করে আপনি অ্যাপ্লিকেশনকে বিভিন্ন ভাষা ও অঞ্চলের জন্য ইন্টারন্যাশনালাইজড করতে পারেন। এটি নিশ্চিত করে যে, আপনার অ্যাপ্লিকেশনটি বিশ্বের বিভিন্ন অঞ্চলের ব্যবহারকারীদের জন্য উপযুক্ত, সঠিক এবং কাস্টমাইজড অভিজ্ঞতা প্রদান করবে।
জাভা ইন্টারন্যাশনালাইজেশন (Java Internationalization বা i18n) এর ক্ষেত্রে JSP Custom Tags এবং Expression Language (EL) ব্যবহারের মাধ্যমে অ্যাপ্লিকেশনগুলিকে স্থানিক ভাষা এবং আঞ্চলিক প্রয়োজনীয়তা অনুসারে কাস্টমাইজ করা যায়। JSP (JavaServer Pages) এবং EL এর মাধ্যমে i18n সমর্থন নিশ্চিত করা হলে, বিভিন্ন ভাষার অনুবাদ এবং উপযুক্ত স্থানিক তথ্য সহজেই প্রদর্শন করা যায়। এখানে JSP Custom Tags এবং Expression Language ব্যবহারের মাধ্যমে i18n সমর্থন করার পদ্ধতি বর্ণনা করা হলো।
1. JSP Custom Tags-এর মাধ্যমে i18n সমর্থন
JSP Custom Tags-এর মাধ্যমে আপনি স্থানিক রিসোর্স লোড করতে এবং একাধিক ভাষার জন্য কনটেন্ট প্রদর্শন করতে পারেন। এই ট্যাগগুলি ব্যবহারকারীর ভাষার উপর ভিত্তি করে কনটেন্ট প্রদর্শন করে।
Custom Tag ব্যবহার করার প্রক্রিয়া:
- Resource Bundle ব্যবহার:
ResourceBundleক্লাসটি জাভা প্রোগ্রামে স্থানিক রিসোর্স লোড করতে ব্যবহৃত হয়। JSP Custom Tags এর মাধ্যমে এটি ব্যবহার করা সম্ভব। - JSP Custom Tag তৈরি: JSP Custom Tags ব্যবহার করে বিভিন্ন ভাষার জন্য অনুবাদ প্রদর্শন করতে Tag Library Descriptor (TLD) ফাইল তৈরি করতে হবে।
** উদাহরণ:**
- প্রথমে একটি ResourceBundle তৈরি করুন, যা ভাষা নির্ভর কনটেন্ট সংরক্ষণ করবে। উদাহরণস্বরূপ,
messages_en.properties(ইংরেজি) এবংmessages_fr.properties(ফরাসি) ফাইল তৈরি করুন। - JSP Custom Tag তৈরি করুন যা
ResourceBundleথেকে স্ট্রিং ডেটা বের করবে। - TLD ফাইলের মধ্যে এই ট্যাগের ডেফিনিশন করুন।
উদাহরণ (JSP Custom Tag TLD):
<tag> <name>message</name> <tag-class>com.example.MessageTag</tag-class> <body-content>empty</body-content> <attribute> <name>key</name> <required>true</required> </attribute> </tag>উদাহরণ (JSP Custom Tag Implementation):
package com.example; import java.io.IOException; import javax.servlet.jsp.JspException; import javax.servlet.jsp.tagext.TagSupport; import java.util.ResourceBundle; public class MessageTag extends TagSupport { private String key; public void setKey(String key) { this.key = key; } @Override public int doStartTag() throws JspException { ResourceBundle bundle = ResourceBundle.getBundle("messages", pageContext.getRequest().getLocale()); String message = bundle.getString(key); try { pageContext.getOut().write(message); } catch (IOException e) { throw new JspException("Error writing message", e); } return SKIP_BODY; } }এইভাবে, আপনি
messageকাস্টম ট্যাগ ব্যবহার করে বিভিন্ন ভাষায় অনুবাদ ডেটা লোড করতে পারবেন।- প্রথমে একটি ResourceBundle তৈরি করুন, যা ভাষা নির্ভর কনটেন্ট সংরক্ষণ করবে। উদাহরণস্বরূপ,
2. Expression Language (EL) এর মাধ্যমে i18n সমর্থন
Expression Language (EL) হলো JSP এর একটি শক্তিশালী বৈশিষ্ট্য যা টেমপ্লেট কোডে সহজ এবং শক্তিশালী এক্সপ্রেশন ব্যবহার করতে সহায়ক। EL ব্যবহার করে আপনি JSP পৃষ্ঠাতে স্থানিকভাবে সমর্থিত বার্তা সহজে অ্যাক্সেস করতে পারেন।
EL দিয়ে i18n সমর্থন:
- Resource Bundle ব্যবহার: EL এর মাধ্যমে
ResourceBundleথেকে স্থানিক তথ্য সহজেই পাওয়া যায়। EL তে আপনিpageContextব্যবহার করেResourceBundleলোড করতে পারেন। ** উদাহরণ:** আপনি
ResourceBundleএর মাধ্যমে জাভা কনফিগারেশন ফাইলের মধ্যে সংরক্ষিত ভাষার স্ট্রিংগুলি EL দিয়ে অ্যাক্সেস করতে পারেন।উদাহরণ (JSP পৃষ্ঠাতে EL ব্যবহার):
<jsp:useBean id="bundle" scope="page" class="java.util.ResourceBundle" /> <c:set var="messages" value="${pageContext.request.locale}" /> <h1>${messages["welcome.message"]}</h1>
এখানে:
${messages["welcome.message"]}EL এক্সপ্রেশনটিwelcome.messageকী এর মানResourceBundleথেকে বের করে, যা অনুবাদিত স্ট্রিং রিটার্ন করবে।
3. JSP এবং EL ব্যবহার করার উপকারিতা:
- সহজ অনুবাদ সমর্থন: JSP Custom Tags এবং EL এর মাধ্যমে আপনি ভাষা পরিবর্তন করার সাথে সাথে ওয়েব পৃষ্ঠাগুলির কনটেন্টও পরিবর্তন করতে পারবেন।
- প্রাক-সংজ্ঞায়িত কনটেন্ট: EL ব্যবহার করলে আপনি
ResourceBundleএবং অন্যান্য স্থানিক তথ্য দ্রুত অ্যাক্সেস করতে পারবেন। - টেমপ্লেটের মধ্যে কোড মিনিমাইজ করা: EL এবং JSP Custom Tags ব্যবহার করে আপনি কোডে কমপ্লেক্সিটি কমিয়ে ডাইনামিক কনটেন্ট প্রদর্শন করতে পারবেন।
JSP Custom Tags এবং Expression Language (EL) ব্যবহার করে জাভা অ্যাপ্লিকেশনগুলির আন্তর্জাতিককরণ (i18n) সমর্থন সহজ হয়। এটি মাল্টি-ল্যাঙ্গুয়েজ সাপোর্ট, স্থানিকভাবে সংবেদনশীল কনটেন্ট এবং ব্যবহারের জন্য উপযুক্ত অনুবাদ প্রদর্শনে সহায়তা করে।
জাভা আন্তর্জাতিককরণ (Java Internationalization বা i18n) এবং স্থানিককরণ (Localization বা L10n) ওয়েব ফর্ম এবং ইনপুট ফিল্ডের জন্য একটি গুরুত্বপূর্ণ অংশ, যেখানে ব্যবহারকারীর ভাষা এবং আঞ্চলিক সেটিংস অনুযায়ী কন্টেন্ট, লেবেল, এবং ইনপুট ফিল্ডগুলোর কাস্টমাইজেশন করা হয়। এটি আপনার অ্যাপ্লিকেশনকে বিভিন্ন ভাষার ব্যবহারকারীদের জন্য সহজ এবং উপযোগী করে তোলে।
ওয়েব ফর্ম এবং ইনপুট ফিল্ডের জন্য Localization
ওয়েব ফর্ম এবং ইনপুট ফিল্ডের জন্য স্থানিককরণ বা Localization করার সময়, আপনি নিশ্চিত করতে চান যে ফর্মের লেবেল, ইনপুট ক্ষেত্রের প্রম্পট, বার্তা, ভুলের সূচক ইত্যাদি ব্যবহারকারীর লোকাল ভাষা এবং সাংস্কৃতিক চাহিদা অনুযায়ী কাস্টমাইজ করা হয়েছে।
Localization-এর মূল উপাদানগুলো:
- ফর্ম লেবেল এবং ট্যাগস:
- ওয়েব ফর্মের ইনপুট ফিল্ডগুলোতে লেবেল যেমন
First Name,Email,Password,Submit Buttonইত্যাদি ব্যবহারকারীর ভাষায় অনুবাদ করা উচিত। - উদাহরণ:
- ইংরেজিতে:
Enter your name - বাংলায়:
আপনার নাম লিখুন
- ইংরেজিতে:
- ওয়েব ফর্মের ইনপুট ফিল্ডগুলোতে লেবেল যেমন
- ইনপুট ফিল্ডের প্রম্পট:
- ইনপুট ফিল্ডের মধ্যে যে সহায়িকা টেক্সট থাকে, সেটি ব্যবহারকারীর ভাষা অনুযায়ী থাকা উচিত।
- উদাহরণ:
- ইংরেজিতে:
Enter your email address - বাংলায়:
আপনার ইমেল ঠিকানা লিখুন
- ইংরেজিতে:
- ভুলের বার্তা (Error Messages):
- ফর্ম সাবমিট করার সময় যদি কোনো ইনপুট ভুল হয়, তাহলে সংশ্লিষ্ট ভুলের বার্তাগুলি ভাষানুযায়ী কাস্টমাইজ করা দরকার।
- উদাহরণ:
- ইংরেজিতে:
This field is required. - বাংলায়:
এই ফিল্ডটি আবশ্যক।
- ইংরেজিতে:
- তারিখ, সময় এবং সংখ্যা ফরম্যাট:
- ইনপুট ফিল্ডে তারিখ, সময় এবং সংখ্যা ফরম্যাট নির্দিষ্ট অঞ্চল অনুযায়ী হতে হবে।
- উদাহরণ:
- ইংরেজিতে:
MM/dd/yyyy(যেমন: 12/22/2024) - বাংলায়:
dd/MM/yyyy(যেমন: ২২/১২/২০২৪)
- ইংরেজিতে:
- ফর্ম সাবমিশন বাটন:
Submit,Cancel,Clearইত্যাদি বাটনের লেবেলগুলোও ব্যবহারকারীর ভাষায় অনুবাদ করা প্রয়োজন।
Localization প্রক্রিয়া:
- Resource Bundles ব্যবহার করা:
- ওয়েব ফর্মের সমস্ত স্ট্যাটিক টেক্সট (যেমন লেবেল, বাটন টেক্সট, এরর মেসেজ)
ResourceBundleএর মাধ্যমে আলাদা ফাইলগুলোতে সংরক্ষণ করা উচিত। প্রতিটি ভাষার জন্য আলাদা.propertiesফাইল তৈরি করা যেতে পারে। - উদাহরণ:
messages_en.properties(ইংরেজি)messages_bn.properties(বাংলা)
এই ফাইলগুলোতে কী-মূল্য জোড়া থাকবে, যেমন:
submitButton=Submit nameLabel=Name errorRequired=This field is required.
- ওয়েব ফর্মের সমস্ত স্ট্যাটিক টেক্সট (যেমন লেবেল, বাটন টেক্সট, এরর মেসেজ)
- Locale অনুযায়ী রিসোর্স লোড করা:
- আপনি যখন ফর্মের ইনপুট ফিল্ড এবং লেবেল লোড করেন, তখন নির্দিষ্ট
Localeঅনুসারে সংশ্লিষ্ট রিসোর্স ফাইলটি লোড করবেন। উদাহরণ:
Locale locale = new Locale("bn", "BD"); // বাংলা (বাংলাদেশ) ResourceBundle bundle = ResourceBundle.getBundle("messages", locale); String submitButtonText = bundle.getString("submitButton");
- আপনি যখন ফর্মের ইনপুট ফিল্ড এবং লেবেল লোড করেন, তখন নির্দিষ্ট
- Dynamic Content:
- যদি ফর্মে কোনো ডাইনামিক কন্টেন্ট থাকে, যেমন পছন্দের তালিকা (dropdowns), তারও স্থানিককরণ করা উচিত।
- উদাহরণ: মাসের নাম (January, February, etc.) বা দেশের নাম বিভিন্ন ভাষায় আলাদা হবে।
- Input Field Validation:
- ইনপুট ফিল্ডগুলোর ভ্যালিডেশন (যেমন ইমেইল ফরম্যাট, পাসওয়ার্ড শক্তি) বিভিন্ন ভাষায় ভিন্ন বার্তা দিতে পারে।
- উদাহরণ:
- ইংরেজিতে:
Invalid email address - বাংলায়:
অবৈধ ইমেল ঠিকানা
- ইংরেজিতে:
- তারিখ, সময় এবং সংখ্যার স্থানিককরণ:
DateFormatএবংNumberFormatক্লাস ব্যবহার করে স্থানিককরণের জন্য তারিখ এবং সংখ্যা সঠিকভাবে ফরম্যাট করুন।উদাহরণ:
DateFormat dateFormat = DateFormat.getDateInstance(DateFormat.MEDIUM, locale); String formattedDate = dateFormat.format(new Date());
ওয়েব ফর্মের Localization উদাহরণ:
ধরা যাক, একটি সাধারণ ওয়েব ফর্মে দুটি ইনপুট ফিল্ড রয়েছে: নাম এবং ইমেইল, এবং একটি সাবমিট বাটন।
messages_en.properties (ইংরেজি):
nameLabel=Name emailLabel=Email submitButton=Submit errorRequired=This field is required.messages_bn.properties (বাংলা):
nameLabel=নাম emailLabel=ইমেইল submitButton=জমা দিন errorRequired=এই ফিল্ডটি আবশ্যক।HTML ফর্ম (Localization সমর্থন সহ):
<form action="submit" method="POST"> <label for="name">${messages.nameLabel}</label> <input type="text" id="name" name="name" required> <br> <label for="email">${messages.emailLabel}</label> <input type="email" id="email" name="email" required> <br> <button type="submit">${messages.submitButton}</button> </form>
এভাবে, ওয়েব ফর্মের বিভিন্ন অংশকে ব্যবহারকারীর ভাষায় স্থানিকীকৃত (Localized) করে, আপনি একটি বৈশ্বিক দর্শকদের জন্য সহজে ব্যবহারযোগ্য ও অভিজ্ঞতার উন্নত ওয়েব অ্যাপ্লিকেশন তৈরি করতে পারবেন।
Read more