Locale Management এবং Language Switcher তৈরি

JSF এর মাল্টি-ল্যাঙ্গুয়েজ সাপোর্ট (i18n) - জেএসএফ (JSF) - Web Development

263

Locale Management হল একটি গুরুত্বপূর্ণ বৈশিষ্ট্য যা আন্তর্জাতিকীকরণের (Internationalization) অংশ হিসেবে কাজ করে, যেখানে অ্যাপ্লিকেশনটি বিভিন্ন ভাষা এবং সংস্কৃতি অনুযায়ী কনফিগার করা হয়। JSF (JavaServer Faces) ফ্রেমওয়ার্কে Locale Management ব্যবহারকারীর ভাষা এবং সংস্কৃতির উপর ভিত্তি করে ডেটা প্রদর্শন এবং ইনপুট গ্রহণের প্রক্রিয়া সহজ করে।

এছাড়া, Language Switcher ব্যবহারকারীদের ভাষা পরিবর্তন করার জন্য একটি কাস্টম ইন্টারফেস উপাদান সরবরাহ করে, যা UI ভাষাকে সরাসরি পরিবর্তন করতে সক্ষম।

Locale Management in JSF


Locale হল একটি ভাষার এবং সংস্কৃতির সেট, যা দেশের নাম, ভাষা, বা অঞ্চল দ্বারা সংজ্ঞায়িত হয়। JSF তে Locale ব্যবস্থাপনা মূলত দুইটি উপাদান দ্বারা করা হয়:

  1. LocaleResolver: এটি সেট করে এবং পরিচালনা করে ব্যবহারকারীর ভাষা বা সংস্কৃতি।
  2. ResourceBundle: এটি আন্তর্জাতিকীকৃত বার্তা এবং স্ট্রিং সাপোর্ট প্রদান করে।

Locale Configuration in JSF


JSF তে Locale কনফিগার করার জন্য আপনাকে faces-config.xml ফাইলে locale-config এবং message-bundle কনফিগার করতে হয়। এতে আপনার অ্যাপ্লিকেশন বিভিন্ন ভাষার বার্তা ফাইল লোড করতে পারে।

উদাহরণ: faces-config.xml এ Locale কনফিগারেশন

<faces-config xmlns="http://java.sun.com/xml/ns/javaee"
              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
              xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
                                  http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd"
              version="2.0">
    
    <locale-config>
        <default-locale>en</default-locale> <!-- Default locale is English -->
        <supported-locale>en</supported-locale> <!-- English as supported language -->
        <supported-locale>fr</supported-locale> <!-- French as supported language -->
    </locale-config>
    
</faces-config>

এখানে:

  • default-locale: অ্যাপ্লিকেশন শুরু করার সময় ডিফল্ট ভাষা (এখানে ইংরেজি)।
  • supported-locale: যেসব ভাষা অ্যাপ্লিকেশন সমর্থন করবে, সেগুলির তালিকা।

Resource Bundle Configuration in JSF


JSF তে বিভিন্ন ভাষার বার্তা এবং স্ট্রিং সংরক্ষণ করার জন্য ResourceBundle ব্যবহার করা হয়। আপনি একটি messages.properties ফাইল তৈরি করে এতে ভাষানুযায়ী বার্তা সংরক্ষণ করবেন।

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

welcomeMessage=Welcome to our application
errorMessage=Something went wrong, please try again

উদাহরণ: messages_fr.properties (French)

welcomeMessage=Bienvenue dans notre application
errorMessage=Quelque chose a mal tourné, veuillez réessayer

এখানে:

  • messages.properties ফাইলটি ইংরেজি ভাষার জন্য বার্তা ধারণ করে।
  • messages_fr.properties ফাইলটি ফরাসি ভাষার জন্য বার্তা ধারণ করে।

Language Switcher in JSF


Language Switcher একটি কাস্টম কম্পোনেন্ট যা ব্যবহারকারীদের ভাষা পরিবর্তন করতে সহায়তা করে। এটি UI এর একটি অংশ হিসেবে কাজ করে, যেখানে ব্যবহারকারী নির্বাচিত ভাষা অনুযায়ী অ্যাপ্লিকেশনের ভাষা পরিবর্তন করতে পারেন।

উদাহরণ: Language Switcher Implementation

১. LocaleBean (Managed Bean)
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;
import java.util.Locale;

@ManagedBean
@SessionScoped
public class LocaleBean {

    private Locale locale;

    public Locale getLocale() {
        return locale != null ? locale : FacesContext.getCurrentInstance().getViewRoot().getLocale();
    }

    public void setLocale(Locale locale) {
        this.locale = locale;
        FacesContext.getCurrentInstance().getViewRoot().setLocale(locale);
    }

    public void switchToEnglish() {
        setLocale(new Locale("en"));
    }

    public void switchToFrench() {
        setLocale(new Locale("fr"));
    }
}

এখানে:

  • setLocale মেথডটি ব্যবহার করে আপনি ইউজারের ভাষা পরিবর্তন করতে পারেন।
  • switchToEnglish এবং switchToFrench মেথডগুলি ভাষা পরিবর্তন করার জন্য ব্যবহৃত হয়।
২. LocaleBean এর সাথে JSF পেজে Language Switcher
<h:form>
    <h:commandButton value="Switch to English" action="#{localeBean.switchToEnglish}" />
    <h:commandButton value="Switch to French" action="#{localeBean.switchToFrench}" />
</h:form>

<h:outputText value="#{msg.welcomeMessage}" />

এখানে:

  • #{msg.welcomeMessage}: এটি Resource Bundle থেকে বার্তা গ্রহণ করবে।
  • Language Switcher: দুইটি বাটন দ্বারা ব্যবহারকারী ইংরেজি এবং ফরাসি ভাষার মধ্যে সুইচ করতে পারেন।

৩. faces-config.xml এ Managed Bean এর কনফিগারেশন

<faces-config xmlns="http://java.sun.com/xml/ns/javaee"
              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
              xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
                                  http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd"
              version="2.0">
    
    <managed-bean>
        <managed-bean-name>localeBean</managed-bean-name>
        <managed-bean-class>com.example.LocaleBean</managed-bean-class>
        <managed-bean-scope>session</managed-bean-scope>
    </managed-bean>

</faces-config>

এখানে, localeBean Managed Bean হিসেবে কনফিগার করা হয়েছে এবং এটি session scope এ রয়েছে, যা ইউজারের সেশনের মধ্যে ভাষা পরিবর্তন সক্ষম করবে।

JSF Locale Handling With Cookies


এছাড়া, Locale পরিবর্তন করার পর যদি আপনি সেটি cookies বা session এ সংরক্ষণ করতে চান, তাহলে তা JSF এ খুব সহজে করা যায়। এর মাধ্যমে, পরবর্তী রিকোয়েস্টে ব্যবহারকারীর ভাষা সংরক্ষিত থাকবে।

import javax.faces.context.FacesContext;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletResponse;

public void setLocaleWithCookie(Locale locale) {
    FacesContext.getCurrentInstance().getViewRoot().setLocale(locale);
    HttpServletResponse response = (HttpServletResponse) FacesContext.getCurrentInstance().getExternalContext().getResponse();
    Cookie localeCookie = new Cookie("locale", locale.getLanguage());
    localeCookie.setMaxAge(60*60*24*365); // Set cookie expiration time
    response.addCookie(localeCookie);
}

এখানে:

  • Cookie ব্যবহার করা হয়েছে যাতে ব্যবহারকারীর ভাষা নির্বাচন পরবর্তী রিকোয়েস্টে সংরক্ষিত থাকে।

সারাংশ


JSF তে Locale Management ব্যবহার করে আপনি আন্তর্জাতিককৃত (Internationalized) অ্যাপ্লিকেশন তৈরি করতে পারেন, যেখানে ব্যবহারকারী তাদের পছন্দসই ভাষায় অ্যাপ্লিকেশনটি দেখতে পারবেন। Language Switcher তৈরি করে, আপনি সহজেই ব্যবহারকারীদের ভাষা পরিবর্তন করার সুযোগ দিতে পারেন। ResourceBundle ব্যবহার করে ভাষাভিত্তিক বার্তা এবং টেক্সট প্রদর্শন করা যায়। JSF অ্যাপ্লিকেশনের জন্য Locale কনফিগারেশন এবং Language Switcher কার্যকরীভাবে ব্যবহার করে একটি মাল্টি-ল্যাঙ্গুয়েজ ওয়েব অ্যাপ্লিকেশন তৈরি করা সম্ভব।

Content added By
Promotion

Are you sure to start over?

Loading...