Resource Bundles ব্যবহার করে পেজ অনুবাদ করা

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

225

JSF (JavaServer Faces) অ্যাপ্লিকেশনগুলিতে Resource Bundles ব্যবহার করা হয় পৃষ্ঠাগুলির অনুবাদ বা লোকালাইজেশন (i18n) পরিচালনা করতে। এটি বিভিন্ন ভাষায় অ্যাপ্লিকেশনের কন্টেন্ট প্রদর্শন করার জন্য খুবই কার্যকরী, বিশেষ করে আন্তর্জাতিক বা বহুভাষিক অ্যাপ্লিকেশন ডেভেলপমেন্টে।

Resource Bundles কি?


Resource Bundles হলো একটি বৈশিষ্ট্য যা বিভিন্ন ভাষায় একটি অ্যাপ্লিকেশনের স্ট্যাটিক কনটেন্টের অনুবাদ সংরক্ষণ করতে সাহায্য করে। এটি একটি বা একাধিক প্রোপার্টি ফাইল যা বিভিন্ন ভাষার জন্য মেসেজ এবং টেক্সট ধারণ করে। এই প্রোপার্টি ফাইলগুলি .properties এক্সটেনশন সহ তৈরি হয় এবং এগুলিতে কী-ভ্যালু পেয়ার থাকে, যেখানে কী-টি ইংরেজি বা অন্য কোনো ভাষার টেক্সটের প্রতিনিধিত্ব করে এবং ভ্যালু হলো সেই টেক্সটের অনুবাদ।

JSF এ Resource Bundles ব্যবহার


JSF তে Resource Bundles ব্যবহারের জন্য আপনাকে faces-config.xml ফাইলের মাধ্যমে অথবা JSF পৃষ্ঠায় resourceBundle অ্যানোটেশন ব্যবহার করতে হয়।

Resource Bundle তৈরি


প্রথমে, আপনাকে ভাষা অনুসারে বিভিন্ন প্রোপার্টি ফাইল তৈরি করতে হবে, যেমন messages.properties (ডিফল্ট ভাষা) এবং messages_fr.properties (ফরাসী ভাষার জন্য)।

১. messages.properties (ডিফল্ট ভাষা)

greeting=Welcome to our website!
loginButton=Login

২. messages_fr.properties (ফরাসী ভাষার জন্য)

greeting=Bienvenue sur notre site Web!
loginButton=Se connecter

এখানে, greeting এবং loginButton দুটি কী যা প্রোপার্টি ফাইলগুলির মাধ্যমে অনুবাদিত হবে।

JSF পেজে Resource Bundle ব্যবহার


JSF পৃষ্ঠাতে <h:outputText> বা অন্যান্য কম্পোনেন্টের মাধ্যমে অনুবাদিত টেক্সট ব্যবহার করতে #{msg['key']} এক্সপ্রেশন ব্যবহার করা হয়। JSF অটোমেটিক্যালি বর্তমান লোকেল অনুযায়ী সঠিক রিসোর্স বান্ডল নির্বাচন করে।

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

<h:html xmlns:h="http://java.sun.com/jsf/html">
    <h:head>
        <title>JSF Resource Bundle Example</title>
    </h:head>
    <h:body>
        <h:outputText value="#{msg.greeting}" />
        <h:commandButton value="#{msg.loginButton}" action="#{loginBean.login}" />
    </h:body>
</h:html>

এখানে:

  • #{msg.greeting}: এটি messages.properties বা অন্যান্য ভাষার প্রোপার্টি ফাইল থেকে greeting কী-এর অনুবাদ করবে।
  • #{msg.loginButton}: এটি loginButton কী-এর অনুবাদ করবে।

Faces-Config.xml ফাইলে Resource Bundle কনফিগারেশন


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>: এটি রিসোর্স বান্ডলের নাম নির্ধারণ করে, যা messages নামে কনফিগার করা হয়েছে।
  • <var>: এটি msg নাম দিয়ে এই বন্ডলটি অ্যাক্সেস করবে।

Locale এবং Language Switching


JSF তে Locale পরিবর্তন করা খুবই সহজ। আপনি <h:selectOneMenu> বা অন্যান্য কন্ট্রোলের মাধ্যমে ব্যবহারকারীর ভাষা পরিবর্তন করতে পারেন এবং সেটি বর্তমান পৃষ্ঠার জন্য রিফ্রেশ করা যায়।

৫. Language Switching (Locale Change) উদাহরণ

<h:form>
    <h:selectOneMenu value="#{localeBean.language}">
        <f:selectItem itemValue="en" itemLabel="English" />
        <f:selectItem itemValue="fr" itemLabel="Français" />
        <f:ajax render="output" />
    </h:selectOneMenu>

    <h:outputText id="output" value="#{msg.greeting}" />
</h:form>

Managed Bean (Locale Bean):

import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import java.util.Locale;
import java.util.ResourceBundle;

@ManagedBean
@SessionScoped
public class LocaleBean {
    private String language = "en"; // Default language

    public String getLanguage() {
        return language;
    }

    public void setLanguage(String language) {
        this.language = language;
        Locale.setDefault(new Locale(language)); // Set the locale
    }
}

এখানে:

  • <f:ajax render="output": ভাষা পরিবর্তন হলে output ট্যাগটি রিফ্রেশ হবে।
  • Locale.setDefault(new Locale(language)): এটি ব্যবহারকারীর নির্বাচিত ভাষাকে অ্যাপ্লিকেশনের লোকেল হিসেবে সেট করে।

সারাংশ


Resource Bundles ব্যবহার করে JSF অ্যাপ্লিকেশনে লোকালাইজেশন (i18n) করা খুবই সহজ এবং কার্যকর। আপনি faces-config.xml এবং JSF পৃষ্ঠায় #{msg['key']} এক্সপ্রেশন ব্যবহার করে বিভিন্ন ভাষার জন্য টেক্সট অনুবাদ করতে পারেন। JSF অ্যাপ্লিকেশনের ভাষা পরিবর্তন বা Locale switching ব্যবস্থাপনা করার জন্য কাস্টম Managed Bean ব্যবহার করতে পারেন, যা ইউজারের ভাষা নির্বাচন অনুসারে সঠিক রিসোর্স বান্ডল নির্বাচন করবে। JSF এবং Resource Bundles এর মাধ্যমে আপনি আন্তর্জাতিক ওয়েব অ্যাপ্লিকেশন তৈরি করতে পারবেন যা বিভিন্ন ভাষায় কন্টেন্ট প্রদর্শন করবে।

Content added By
Promotion

Are you sure to start over?

Loading...