Multilingual পেজ কনফিগারেশন এবং ডেটা ফরম্যাটিং

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

282

JSF (JavaServer Faces) অ্যাপ্লিকেশনগুলির মধ্যে Multilingual Support এবং Data Formatting ব্যবহারকারীদের জন্য অ্যাপ্লিকেশনটি বিভিন্ন ভাষায় এবং অঞ্চলের জন্য উপযোগী করতে সাহায্য করে। Internationalization (i18n) এবং Localization (l10n) ফিচারগুলির মাধ্যমে আপনি সহজেই একাধিক ভাষায় পেজ কনফিগার এবং ডেটা ফরম্যাটিং নিশ্চিত করতে পারেন। এই টিউটোরিয়ালে আমরা দেখব কিভাবে JSF অ্যাপ্লিকেশনগুলিতে Multilingual Pages কনফিগার করা যায় এবং Data Formatting ব্যবহার করা যায়।

১. Multilingual পেজ কনফিগারেশন (i18n)


Multilingual Support বা i18n (Internationalization) এর মাধ্যমে একটি JSF অ্যাপ্লিকেশনকে একাধিক ভাষায় কনফিগার করা যায়। এটি সাধারণত resource bundles ব্যবহার করে করা হয়, যা বিভিন্ন ভাষার জন্য স্ট্রিং সংরক্ষণ করে। JSF অ্যাপ্লিকেশনগুলি Locale পরিবর্তন করার মাধ্যমে বিভিন্ন ভাষার সাপোর্ট প্রদান করে।

১.১. Resource Bundle তৈরি করা

প্রথমে, আপনাকে ভাষার স্ট্রিং সংরক্ষণের জন্য resource bundle তৈরি করতে হবে। আপনি .properties ফাইল ব্যবহার করে এই স্ট্রিংগুলি সংরক্ষণ করতে পারেন।

messages_en.properties (ইংরেজি):

greeting=Hello, welcome to our application!
loginMessage=Please enter your username and password.

messages_fr.properties (ফরাসি):

greeting=Bonjour, bienvenue sur notre application!
loginMessage=Veuillez entrer votre nom d'utilisateur et votre mot de passe.

এখানে:

  • messages_en.properties ইংরেজি ভাষার জন্য, এবং messages_fr.properties ফরাসি ভাষার জন্য।

১.২. faces-config.xml কনফিগারেশন

এখন faces-config.xml ফাইলে resource bundle কনফিগার করতে হবে, যাতে JSF বিভিন্ন ভাষার স্ট্রিংগুলি সঠিকভাবে লোড করতে পারে।

faces-config.xml:

<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">
    
    <application>
        <resource-bundle>
            <base-name>messages</base-name>
            <var>msg</var>
        </resource-bundle>
    </application>
</faces-config>

এখানে:

  • base-name: resource bundle এর নাম, যেটি messages রাখা হয়েছে।
  • var: এটি হলো bean এর ভ্যারিয়েবল নাম, যেখানে আপনি resource bundle এর স্ট্রিং অ্যাক্সেস করবেন (যেমন msg ব্যবহার হবে)।

১.৩. JSF পেজে Resource Bundle ব্যবহার করা

JSF পেজে resource bundle থেকে স্ট্রিং গুলি ব্যবহার করতে EL Expressions (#{msg.key}) ব্যবহার করতে হবে।

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

এখানে, #{msg.greeting} এবং #{msg.loginMessage} রিসোর্স বন্ডল থেকে স্ট্রিংগুলো লোড করবে এবং পেজে প্রদর্শন করবে।

১.৪. Locale পরিবর্তন করা

JSF তে Locale পরিবর্তন করার জন্য FacesContext এবং Locale ব্যবহার করা হয়।

LocaleBean.java (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 String selectedLanguage = "en"; // Default to English

    public void changeLanguage() {
        Locale locale = new Locale(selectedLanguage);
        FacesContext.getCurrentInstance().getViewRoot().setLocale(locale);
    }

    public String getSelectedLanguage() {
        return selectedLanguage;
    }

    public void setSelectedLanguage(String selectedLanguage) {
        this.selectedLanguage = selectedLanguage;
    }
}

JSF পেজে Language Selection:

<h:form>
    <h:selectOneMenu value="#{localeBean.selectedLanguage}">
        <f:selectItem itemValue="en" itemLabel="English" />
        <f:selectItem itemValue="fr" itemLabel="French" />
    </h:selectOneMenu>
    
    <h:commandButton value="Change Language" action="#{localeBean.changeLanguage}" />
</h:form>

এখানে:

  • changeLanguage() মেথড ব্যবহারকারী নির্বাচিত ভাষা সেট করে এবং FacesContext এর মাধ্যমে পেজের Locale আপডেট করে।

২. Data Formatting (ডেটা ফরম্যাটিং)


JSF তে Data Formatting ব্যবহার করে আপনি ব্যবহারকারীদের উপযোগীভাবে ডেটা প্রদর্শন করতে পারেন, যেমন তারিখ, মুদ্রা, সংখ্যা ইত্যাদি। JSF স্বয়ংক্রিয়ভাবে JSF Converters ব্যবহার করে ডেটা ফরম্যাট করতে সাহায্য করে।

২.১. Date Formatting

JSF তে তারিখ ফরম্যাট করতে h:outputText কম্পোনেন্টের মাধ্যমে JSF date converter ব্যবহার করা হয়।

<h:outputText value="#{userBean.birthDate}" converter="javax.faces.DateTime" />

এখানে:

  • javax.faces.DateTime কনভার্টার ব্যবহার করে তারিখটি ইউজারের লোকাল ফরম্যাটে প্রদর্শিত হবে।

২.২. Currency Formatting

Currency ফরম্যাট করতে <h:outputText> কম্পোনেন্টে JSF Currency Converter ব্যবহার করতে পারেন।

<h:outputText value="#{userBean.salary}" converter="javax.faces.Currency" />

এখানে:

  • javax.faces.Currency কনভার্টার ব্যবহার করে মুদ্রা মান ফরম্যাট করা হয়, যা ইউজারের লোকাল মুদ্রা সিম্বল ব্যবহার করবে।

২.৩. Number Formatting

Number ফরম্যাটিংয়ের জন্য JSF Number Converter ব্যবহার করতে পারেন।

<h:outputText value="#{userBean.someNumber}" converter="javax.faces.Number" />

এখানে:

  • javax.faces.Number কনভার্টারটি নম্বরটির ফরম্যাট ইউজারের লোকাল কনফিগারেশন অনুযায়ী প্রদর্শন করবে।

৩. JSF Custom Converter


আপনি চাইলে Custom Converter তৈরি করে JSF এ বিশেষ ধরনের ডেটা ফরম্যাটিং করতে পারেন, যেমন ডেটা কাস্টমাইজড ফরম্যাটে দেখানো।

উদাহরণ: Custom Converter

@FacesConverter(forClass = Date.class)
public class CustomDateConverter implements Converter {

    private static final String DATE_FORMAT = "yyyy-MM-dd";

    @Override
    public Object getAsObject(FacesContext context, UIComponent component, String value) {
        try {
            SimpleDateFormat sdf = new SimpleDateFormat(DATE_FORMAT);
            return sdf.parse(value);
        } catch (ParseException e) {
            return null;
        }
    }

    @Override
    public String getAsString(FacesContext context, UIComponent component, Object value) {
        SimpleDateFormat sdf = new SimpleDateFormat(DATE_FORMAT);
        return sdf.format((Date) value);
    }
}

এখানে, CustomDateConverter ক্লাসটি তারিখ ফরম্যাটিংয়ের জন্য কাস্টম কনভার্টার তৈরি করেছে।

সারাংশ


JSF অ্যাপ্লিকেশনগুলির জন্য Multilingual Support এবং Data Formatting অত্যন্ত গুরুত্বপূর্ণ ফিচার। i18n কনফিগারেশন ব্যবহার করে আপনি সহজেই বিভিন্ন ভাষার স্ট্রিং লোড করতে পারেন এবং Locale পরিবর্তন করতে পারেন। এছাড়া, JSF Converters (যেমন Date, Currency, Number) ব্যবহার করে ডেটা ফরম্যাটিং করতে পারেন, যা ব্যবহারকারীদের অভিজ্ঞতা আরও উন্নত করে। Custom Converters ব্যবহার করে আপনি নিজের প্রয়োজন অনুযায়ী ডেটা ফরম্যাটিং কাস্টমাইজ করতে পারেন। JSF এর মাধ্যমে মাল্টি-ল্যাঙ্গুয়েজ সাপোর্ট এবং ডেটা ফরম্যাটিং আপনার অ্যাপ্লিকেশনকে বিশ্বব্যাপী ব্যবহারকারীদের জন্য উপযোগী এবং ইন্টারঅ্যাকটিভ করে তোলে।

Content added By
Promotion

Are you sure to start over?

Loading...