Struts 2 এর Internationalization (i18n)

স্ট্রাটস (Struts 2) - Java Technologies

334

Internationalization (i18n) হলো এমন একটি প্রক্রিয়া যার মাধ্যমে একটি সফটওয়্যার অ্যাপ্লিকেশনকে বিভিন্ন ভাষায় কাস্টমাইজ করা যায়। Struts 2-এ Internationalization (i18n) ব্যবহার করে অ্যাপ্লিকেশনটি একাধিক ভাষায় ব্যবহারকারীর জন্য সহজে উপলব্ধ করা যায়। এই প্রক্রিয়ায়, অ্যাপ্লিকেশনের সমস্ত UI text, error messages, labels, button texts ইত্যাদি আলাদা আলাদা ভাষায় প্রদর্শন করা যায়।

Struts 2-এ Internationalization (i18n) সাধারনত Properties files এর মাধ্যমে কনফিগার করা হয়, যেখানে বিভিন্ন ভাষার জন্য আলাদা ফাইল থাকে। আপনার অ্যাপ্লিকেশনটি তখন ব্যবহারকারীর locale এর ভিত্তিতে প্রয়োজনীয় ভাষায় ডাটা প্রদর্শন করবে।

Struts 2 এর Internationalization (i18n) কাজ করার পদ্ধতি

Struts 2-এর i18n বাস্তবায়ন করার জন্য আপনাকে কিছু ধাপ অনুসরণ করতে হবে:

  1. Properties ফাইল তৈরি: বিভিন্ন ভাষার জন্য properties ফাইল তৈরি করতে হবে।
  2. Struts 2 কনফিগারেশন: struts.xml ফাইলে ইন্টারন্যাশনালাইজেশন সাপোর্ট কনফিগার করতে হবে।
  3. Locale Setting: Locale পরিবর্তন করার জন্য রিকোয়েস্ট পারামিটার ব্যবহার করতে হবে।

১. Properties ফাইল তৈরি

Struts 2-এ Internationalization (i18n) করতে প্রথমে আপনাকে properties ফাইল তৈরি করতে হবে যেখানে বিভিন্ন ভাষার জন্য ইউজার ইন্টারফেসের টেক্সট সংরক্ষণ করা হবে।

উদাহরণ: English properties ফাইল (messages.properties)

welcome.message=Welcome to our website
error.message=Something went wrong, please try again
button.submit=Submit

উদাহরণ: বাংলা properties ফাইল (messages_bn.properties)

welcome.message=আমাদের ওয়েবসাইটে স্বাগতম
error.message=কিছু ভুল হয়েছে, দয়া করে আবার চেষ্টা করুন
button.submit=জমা দিন

এখানে messages.properties ফাইলে ইংরেজিতে টেক্সট এবং messages_bn.properties ফাইলে বাংলায় টেক্সট সংরক্ষণ করা হয়েছে। আপনি আরো ভাষার জন্য আলাদা আলাদা properties ফাইল তৈরি করতে পারেন (যেমন, messages_fr.properties ফ্রেঞ্চের জন্য)।


২. Struts 2 কনফিগারেশন

Struts 2-এ i18n কনফিগার করার জন্য আপনাকে struts.xml ফাইলে i18n এর জন্য ইন্টারসেপ্টর কনফিগার করতে হবে। এই ইন্টারসেপ্টরটি locale অনুযায়ী ব্যবহারকারীর ভাষা সিলেক্ট করবে এবং সেই অনুযায়ী properties ফাইল থেকে টেক্সট নিয়ে আসবে।

উদাহরণ: struts.xml কনফিগারেশন

<struts>
    <package name="default" namespace="/" extends="struts-default">
        
        <!-- Internationalization Interceptor -->
        <interceptors>
            <interceptor name="i18n" class="org.apache.struts2.interceptor.I18nInterceptor"/>
            <interceptor-stack name="defaultStack">
                <interceptor-ref name="i18n"/>
                <interceptor-ref name="basicStack"/>
            </interceptor-stack>
        </interceptors>

        <!-- Hello Action -->
        <action name="hello" class="com.example.HelloAction" method="execute">
            <result>/WEB-INF/content/hello.jsp</result>
        </action>
    </package>
</struts>

এখানে:

  • I18nInterceptor: এটি ব্যবহারকারীকে নির্দিষ্ট ভাষায় কনভার্ট করতে সাহায্য করে এবং locale এর ভিত্তিতে properties ফাইলের ভাষা নির্বাচন করে।

৩. Locale Setting

Struts 2-এ আপনি ইউজারের ভাষা পরিবর্তন করতে locale প্যারামিটার ব্যবহার করতে পারেন। এই প্যারামিটার ব্যবহার করে আপনি ব্যবহারকারীর রিকোয়েস্ট অনুযায়ী ভাষা সিলেক্ট করতে পারবেন।

উদাহরণ: Locale পরিবর্তন করা

  1. Locale Selector Action: ব্যবহারকারীর পছন্দ অনুযায়ী ভাষা নির্বাচন করতে একটি অ্যাকশন তৈরি করুন।
package com.example;

import com.opensymphony.xwork2.ActionSupport;

public class LocaleAction extends ActionSupport {

    private String language;

    public String getLanguage() {
        return language;
    }

    public void setLanguage(String language) {
        this.language = language;
    }

    public String execute() {
        if ("bn".equals(language)) {
            setLocale(new java.util.Locale("bn"));
        } else {
            setLocale(new java.util.Locale("en"));
        }
        return SUCCESS;
    }
}
  1. Locale Selector in JSP: Locale পরিবর্তন করার জন্য একটি ড্রপডাউন বা বাটন তৈরি করুন যা ব্যবহারকারীকে তার পছন্দের ভাষা নির্বাচন করতে দেয়।
<!-- locale.jsp -->
<html>
    <body>
        <h2><s:property value="welcome.message" /></h2>
        <s:form action="locale" method="post">
            <s:select name="language" list="#{'en':'English', 'bn':'Bangla'}" />
            <s:submit value="Change Language" />
        </s:form>
    </body>
</html>

এখানে, ব্যবহারকারী English অথবা Bangla সিলেক্ট করতে পারবেন, এবং locale প্যারামিটার ব্যবহার করে ভাষা পরিবর্তন হবে।


৪. JSP পেজে Text Display

JSP পেজে আপনি Struts 2 tags ব্যবহার করে Internationalized টেক্সট প্রদর্শন করতে পারেন। এটি <s:property> ট্যাগ দিয়ে করা হয়।

উদাহরণ: Internationalized Text in JSP

<!-- hello.jsp -->
<html>
    <body>
        <h2><s:property value="welcome.message" /></h2>
        <s:submit value="button.submit" />
    </body>
</html>

এখানে:

  • <s:property> ট্যাগ ব্যবহার করে welcome.message এবং button.submit এর মান প্রকৃত locale অনুযায়ী প্রদর্শিত হবে।

৫. Struts 2 Localization Mechanism

Struts 2 ইন্টারন্যাশনালাইজেশন কনফিগারেশনের জন্য Locale এবং Resource Bundles ব্যবহার করে। Struts 2 দ্বারা ব্যবহৃত resource bundle নির্ধারণের জন্য struts.properties ফাইলেও কনফিগারেশন করা যায়।

উদাহরণ: struts.properties কনফিগারেশন

struts.i18n.reload=true
struts.i18n.encoding=UTF-8

এই কনফিগারেশন Struts 2-কে নির্দেশ দেয় যে সে i18n রিসোর্স ফাইলগুলি প্রতিবার রিলোড করবে এবং ইউনিকোড এনকোডিং ব্যবহার করবে।


৬. Struts 2-এ i18n এর সুবিধা

  • Easy Configuration: Struts 2-এ i18n কনফিগারেশন খুবই সহজ। শুধুমাত্র কিছু XML কনফিগারেশন এবং properties ফাইল ব্যবহার করা হয়।
  • Dynamic Language Change: ব্যবহারকারী ড্রপডাউন বা বাটন ক্লিকের মাধ্যমে ভাষা পরিবর্তন করতে পারে।
  • Efficient and Scalable: একাধিক ভাষা সাপোর্ট সহজভাবে এবং কার্যকরভাবে বাস্তবায়ন করা যায়।
  • Centralized Error Handling: সমস্ত ত্রুটি বার্তা এবং UI টেক্সটগুলি এক জায়গায় রাখা যায় এবং সহজেই ম্যানেজ করা যায়।

সারাংশ

  • Struts 2-এ Internationalization (i18n) খুব সহজে কনফিগার করা যায়, যা অ্যাপ্লিকেশনটিকে একাধিক ভাষায় রূপান্তরিত করার সুযোগ দেয়।
  • properties files এর মাধ্যমে আপনি বিভিন্ন ভাষার জন্য টেক্সট সংরক্ষণ করতে পারেন।
  • struts.xml এবং struts.properties ফাইল ব্যবহার করে locale এবং resources কনফিগার করা হয়।
  • Struts 2 ইন্টারন্যাশনালাইজেশন প্রক্রিয়া সহজ এবং কার্যকরী, যা একটি ওয়েব অ্যাপ্লিকেশনকে বহু ভাষায় উপযোগী করে তোলে।
Content added By

Internationalization (i18n) হল একটি সফটওয়্যার ডেভেলপমেন্ট কৌশল যা সফটওয়্যার অ্যাপ্লিকেশনকে বিভিন্ন ভাষা, সংস্কৃতি এবং অঞ্চল অনুযায়ী কনফিগার বা কাস্টমাইজ করার প্রক্রিয়া। Struts 2 ফ্রেমওয়ার্কে Internationalization (i18n) এর মাধ্যমে আপনি অ্যাপ্লিকেশনকে বিভিন্ন ভাষায় লঞ্চ করতে পারেন, যাতে একে বিশ্বব্যাপী ব্যবহারকারীদের জন্য উপযুক্ত করা যায়। এতে ব্যবহারকারী ভাষার ভিত্তিতে অ্যাপ্লিকেশনের টেক্সট, তারিখ, সময়, মুদ্রার মান, ইত্যাদি উপাদান পরিবর্তন করা হয়।

Struts 2-এ Internationalization (i18n) সাধারণত Resource Bundle ব্যবহার করে করা হয়, যেখানে প্রয়োজনীয় ভাষার জন্য পৃথক ফাইল তৈরি করা হয় এবং তারপর এগুলি UI তে লোড করা হয়।


Struts 2 এ Internationalization (i18n) কনফিগারেশন

Struts 2 এর মাধ্যমে Internationalization এর জন্য সাধারণত properties ফাইল ব্যবহৃত হয়। এগুলি সাধারণত messages.properties, messages_en.properties, messages_fr.properties ইত্যাদি নামে থাকে, এবং প্রতিটি ফাইলে নির্দিষ্ট ভাষার জন্য টেক্সট স্ট্রিং থাকে।

1. Struts 2 Internationalization এর জন্য কনফিগারেশন

Struts 2-এ i18n কনফিগার করার জন্য কিছু পদক্ষেপ অনুসরণ করতে হয়:

  1. struts.xml ফাইলে Locale Interceptor যোগ করা
  2. messages.properties ফাইলে ভাষার জন্য প্রয়োজনীয় টেক্সট সংজ্ঞায়িত করা
  3. JSP পেজে বা অন্য ভিউ ফাইলগুলোতে লোড করা এবং ব্যবহার করা

1.1. struts.xml ফাইলে Locale Interceptor কনফিগার করা

struts.xml ফাইলে Locale Interceptor কনফিগার করতে হবে যাতে ব্যবহারকারীর ভাষা অনুযায়ী UI টেক্সট পরিবর্তন করা যায়। এটি কনফিগার করার জন্য নিচে একটি উদাহরণ দেওয়া হল:

<struts>
    <package name="default" extends="struts-default">
        
        <!-- Locale Interceptor Configuration -->
        <interceptors>
            <interceptor name="locale" class="org.apache.struts2.interceptor.LocalizableTextInterceptor"/>
        </interceptors>

        <action name="login" class="com.example.action.LoginAction">
            <result name="success">/welcome.jsp</result>
            <result name="input">/login.jsp</result>
        </action>
    </package>
</struts>

এখানে, LocalizableTextInterceptor ব্যবহার করে ইন্টারসেপ্টরের মাধ্যমে ভাষার জন্য প্রপার টেক্সট ব্যবহার করা হয়েছে।

1.2. messages.properties ফাইলে ভাষার জন্য টেক্সট সংজ্ঞায়িত করা

প্রতিটি ভাষার জন্য আলাদা properties ফাইল তৈরি করা হয়, যেখানে বিভিন্ন ভাষায় টেক্সট সংজ্ঞায়িত থাকে। নিচে কিছু উদাহরণ দেওয়া হল:

messages.properties (ডিফল্ট ভাষার জন্য):

login.username=Username
login.password=Password
login.button=Login

messages_en.properties (ইংরেজি ভাষার জন্য):

login.username=Username
login.password=Password
login.button=Login

messages_fr.properties (ফরাসি ভাষার জন্য):

login.username=Nom d'utilisateur
login.password=Mot de passe
login.button=Connexion

এখানে, messages.properties ফাইলটি ডিফল্ট ভাষার জন্য এবং অন্য ফাইলগুলো নির্দিষ্ট ভাষার জন্য তৈরি করা হয়েছে। messages_en.properties ইংরেজি ভাষার জন্য এবং messages_fr.properties ফাইলটি ফরাসি ভাষার জন্য।

1.3. JSP ফাইল (View) এ লোড করা এবং ব্যবহার করা

Struts 2-এ i18n কনফিগার করার পর, JSP পেজে s:text ট্যাগ ব্যবহার করে টেক্সট রেন্ডার করা হয়। উদাহরণস্বরূপ:

<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<head><title>Login Page</title></head>
<body>
    <h2><s:text name="login.username" /></h2>
    <s:textfield name="username" />
    <h2><s:text name="login.password" /></h2>
    <s:password name="password" />
    <s:submit value="<s:text name='login.button' />" />
</body>
</html>

এখানে, s:text ট্যাগ ব্যবহার করা হয়েছে যেখানে login.username, login.password, এবং login.button এর মান messages.properties বা নির্দিষ্ট ভাষার properties ফাইল থেকে নেয়া হবে।

1.4. Language Selection (ভাষা নির্বাচন)

ভাষা নির্বাচন করার জন্য আপনাকে সাধারণত একটি ড্রপডাউন বা লিঙ্ক তৈরি করতে হবে, যাতে ব্যবহারকারী ভাষা পরিবর্তন করতে পারে। নিচে একটি উদাহরণ দেয়া হল যেখানে ব্যবহারকারীকে ভাষা পরিবর্তন করার সুযোগ দেওয়া হচ্ছে:

<html>
<head><title>Language Selection</title></head>
<body>
    <h2>Choose Language:</h2>
    <a href="<s:url action="login" addSession="false">?lang=en">English</a> | 
    <a href="<s:url action="login" addSession="false">?lang=fr">Français</a>
</body>
</html>

এখানে, lang প্যারামিটার ব্যবহার করে ভাষা পরিবর্তন করা হয়েছে। যখন ব্যবহারকারী ভাষা পরিবর্তন করবে, তখন নতুন ভাষার properties ফাইল লোড হবে এবং UI টেক্সট সেই অনুযায়ী পরিবর্তিত হবে।


2. Struts 2-এ Internationalization (i18n) প্রয়োগের সুবিধা

  1. Multiple Language Support: বিভিন্ন ভাষায় অ্যাপ্লিকেশন তৈরি করা সম্ভব, যা বিশ্বব্যাপী ব্যবহারকারীদের জন্য উপযোগী।
  2. Easier Maintenance: সমস্ত ভাষার টেক্সট পৃথক properties ফাইলে থাকে, ফলে ভবিষ্যতে ভাষা পরিবর্তন বা নতুন ভাষা যোগ করা সহজ হয়।
  3. User Experience: ব্যবহারকারীরা তাদের পছন্দসই ভাষায় অ্যাপ্লিকেশন ব্যবহার করতে পারবে, যা তাদের জন্য একটি ব্যক্তিগত অভিজ্ঞতা তৈরি করে।

সারাংশ

Struts 2-এ Internationalization (i18n) ব্যবহারের মাধ্যমে অ্যাপ্লিকেশনকে বিভিন্ন ভাষায় কনফিগার করা যায়। properties ফাইল ব্যবহার করে ভাষা নির্ধারণ এবং UI টেক্সট পরিবর্তন করা হয়। Struts 2 এর Locale Interceptor, messages.properties ফাইল এবং s:text ট্যাগের মাধ্যমে এই প্রক্রিয়া সঞ্চালিত হয়। এটি বিশ্বব্যাপী ব্যবহারকারীদের জন্য অ্যাপ্লিকেশনটিকে উপযুক্ত করে তোলে এবং ব্যবহারকারীর অভিজ্ঞতা বৃদ্ধি করে।

Content added By

Struts 2 একটি শক্তিশালী MVC ফ্রেমওয়ার্ক যা বিভিন্ন ধরনের ওয়েব অ্যাপ্লিকেশন তৈরি করতে ব্যবহৃত হয়। এর মধ্যে internationalization (i18n) এবং localization (l10n) এর সুবিধা রয়েছে, যার মাধ্যমে অ্যাপ্লিকেশনটির ভাষা এবং স্থানীয় কনফিগারেশন কাস্টমাইজ করা যায়। ResourceBundle এবং Locale এই দুটি উপাদানকে ব্যবহার করে আপনি আপনার অ্যাপ্লিকেশনের ভাষা পরিবর্তন বা স্থানীয়করণ (localization) কার্যকরভাবে পরিচালনা করতে পারেন।

1. ResourceBundle এবং Locale কী?

  • ResourceBundle: এটি একটি Java ক্লাস যা ভ্যালিড ল্যাঙ্গুয়েজ রিসোর্স ফাইল (যেমন, .properties ফাইল) থেকে বিভিন্ন কনফিগারেশন রিসোর্স (যেমন বার্তা, টেক্সট) লোড করতে ব্যবহৃত হয়।
  • Locale: Locale Java-তে একটি কনফিগারেশন অবজেক্ট যা ব্যবহারকারীর ভাষা, দেশ এবং অন্যান্য কাস্টম সেটিংস নির্দেশ করে।

Struts 2 তে ResourceBundle এবং Locale ব্যবহারের মাধ্যমে আপনি ভাষা পরিবর্তন এবং বিভিন্ন দেশে অ্যাপ্লিকেশনটি কাস্টমাইজ করতে পারবেন।


2. Struts 2 তে ResourceBundle এবং Locale সেটআপ

1. struts.xml কনফিগারেশন

প্রথমে struts.xml ফাইলে ResourceBundle এবং Locale কনফিগার করা প্রয়োজন। Struts 2 এর মাধ্যমে এটি খুব সহজে করা যায়।

<package name="default" extends="struts-default">
    <action name="welcome" class="com.example.WelcomeAction">
        <result name="success">/welcome.jsp</result>
    </action>

    <!-- Enable i18n (Internationalization) -->
    <constant name="struts.custom.i18n.resources" value="messages"/>
    <constant name="struts.locale" value="en_US"/>
</package>

ব্যাখ্যা:

  • struts.custom.i18n.resources: এখানে messages নামক ResourceBundle কে রেফারেন্স করা হয়েছে, যার মাধ্যমে বার্তা ফাইল লোড করা হবে।
  • struts.locale: এটি ডিফল্ট লোকে (locale) সেট করার জন্য ব্যবহৃত হয় (যেমন "en_US" বা "fr_FR")।

2. Resource Bundle (messages.properties)

messages.properties ফাইলটি এমন একটি ফাইল যা আপনার অ্যাপ্লিকেশনের জন্য আন্তর্জাতিক বার্তা সংরক্ষণ করে। আপনি একাধিক .properties ফাইল তৈরি করতে পারেন বিভিন্ন ভাষার জন্য (যেমন messages_en_US.properties, messages_fr_FR.properties ইত্যাদি)।

messages.properties (ডিফল্ট ইংরেজি):

welcome.message=Welcome to our application!

messages_fr_FR.properties (ফরাসি ভাষায়):

welcome.message=Bienvenue dans notre application!

messages_es_ES.properties (স্প্যানিশ ভাষায়):

welcome.message=¡Bienvenido a nuestra aplicación!

3. Action Class (WelcomeAction)

একটি Action Class তৈরি করুন যেখানে আপনি ResourceBundle থেকে বার্তা টেনে নেবেন এবং সেই বার্তাটি ব্যবহারকারীর কাছে দেখাবেন।

import com.opensymphony.xwork2.ActionSupport;
import java.util.ResourceBundle;

public class WelcomeAction extends ActionSupport {
    private String message;

    public String execute() {
        ResourceBundle bundle = ResourceBundle.getBundle("messages", getLocale());
        message = bundle.getString("welcome.message");
        return SUCCESS;
    }

    public String getMessage() {
        return message;
    }
}

ব্যাখ্যা:

  • ResourceBundle.getBundle() মেথডটি ব্যবহার করে সঠিক লোকে অনুযায়ী বার্তা ফাইলটি লোড করা হচ্ছে। getLocale() মেথডটি ব্যবহারকারীর বর্তমান Locale ফেরত দেয়।
  • এখানে message নামক একটি ফিল্ড তৈরি করা হয়েছে যেখানে welcome.message এর মান রাখা হচ্ছে।

4. JSP ফাইল (welcome.jsp)

JSP ফাইলে আপনি Action Class থেকে প্রাপ্ত বার্তা ব্যবহার করতে পারেন।

<!DOCTYPE html>
<html>
<head>
    <title>Welcome</title>
</head>
<body>
    <h1>${welcome.message}</h1> <!-- Display welcome message -->
</body>
</html>

ব্যাখ্যা:

  • welcome.message হল সেই বার্তা যা Action Class থেকে পেয়েছি এবং এটি JSP তে প্রদর্শিত হচ্ছে।

3. Locale পরিবর্তন করা

Locale পরিবর্তন করতে হলে, আপনি struts.xml বা Action Class তে Locale সেট করতে পারেন। আপনি যদি ব্যবহারকারীর ভাষা পরিবর্তন করতে চান, তবে আপনি LocaleSwitcherInterceptor ব্যবহার করতে পারেন।

Locale Switcher Interceptor ব্যবহার

struts.xml তে LocaleSwitcherInterceptor ব্যবহার করার জন্য এটি কনফিগার করুন:

<package name="default" extends="struts-default">
    <interceptors>
        <interceptor name="locale" class="org.apache.struts2.interceptor.LocaleSwitcherInterceptor">
            <param name="defaultLocale">en_US</param>
        </interceptor>
        <interceptor-stack name="defaultStack">
            <interceptor-ref name="locale"/>
            <interceptor-ref name="actionMapping"/>
            <interceptor-ref name="exception"/>
        </interceptor-stack>
    </interceptors>
</package>

এখানে:

  • LocaleSwitcherInterceptor ব্যবহার করা হয়েছে যার মাধ্যমে ডিফল্ট ভাষা (en_US) সেট করা হয়েছে।
  • ইউজার যদি ভাষা পরিবর্তন করতে চায়, তবে আপনি URL বা অন্যান্য ইন্টারফেসের মাধ্যমে এটি করতে পারেন।

Locale পরিবর্তনের জন্য Action Class উদাহরণ

import com.opensymphony.xwork2.ActionSupport;
import org.apache.struts2.interceptor.ServletRequestAware;
import javax.servlet.http.HttpServletRequest;

public class ChangeLocaleAction extends ActionSupport implements ServletRequestAware {
    private HttpServletRequest request;

    public String execute() {
        String lang = request.getParameter("lang");
        if ("fr".equals(lang)) {
            setLocale(new Locale("fr", "FR"));
        } else {
            setLocale(new Locale("en", "US"));
        }
        return SUCCESS;
    }

    public void setServletRequest(HttpServletRequest request) {
        this.request = request;
    }
}

ব্যাখ্যা:

  • এই অ্যাকশনে, ইউজার যদি lang=fr প্যারামিটার পাঠায় তবে ফরাসি ভাষা নির্বাচন করা হবে, অন্যথায় ইংরেজি ভাষা ব্যবহৃত হবে।

4. Struts 2 তে ResourceBundle এবং Locale এর সুবিধা

  • Multi-language Support: এটি আপনাকে একাধিক ভাষা সমর্থন করার সুযোগ দেয়, যার মাধ্যমে আপনি ইউজারদের স্থানীয় ভাষায় অ্যাপ্লিকেশন ব্যবহার করতে পারেন।
  • Centralized Message Management: সব ভাষার জন্য বার্তা এবং টেক্সট একক ফাইলে রাখা যায়, যা অ্যাপ্লিকেশনের রক্ষণাবেক্ষণ সহজ করে।
  • Flexibility: LocaleSwitcherInterceptor ব্যবহার করে সহজেই ব্যবহারকারীর ভাষা পরিবর্তন করা যায়।

সারাংশ

Struts 2 তে ResourceBundle এবং Locale ব্যবহার করে আপনি সহজেই আপনার অ্যাপ্লিকেশনের ভাষা এবং স্থানীয় কনফিগারেশন কাস্টমাইজ করতে পারেন। এটি internationalization (i18n) এবং localization (l10n) নিশ্চিত করার একটি শক্তিশালী পদ্ধতি। আপনি struts.xml এবং Action ClassLocale সেট করে এবং ResourceBundle ব্যবহার করে বিভিন্ন ভাষায় বার্তা প্রদর্শন করতে পারেন।

Content added By

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 কনফিগারেশন খুবই সহজ এবং এটি ইউজারদের জন্য একটি মাল্টি-ল্যাঙ্গুয়েজ অ্যাপ্লিকেশন তৈরি করতে সহায়তা করে, যার ফলে বিভিন্ন দেশের ব্যবহারকারীরা তাদের ভাষায় অ্যাপ্লিকেশন ব্যবহার করতে পারেন।

Content added By
Promotion

Are you sure to start over?

Loading...