Multi-language Support করা

Web Development - অ্যাপাচি ট্যাপেস্ট্রি (Apache Tapestry) - Tapestry এর Localization এবং Internationalization |

Apache Tapestry একটি শক্তিশালী web application framework, যা localization (ভাষা স্থানীয়করণ) এবং internationalization (আন্তর্জাতিকীকরণ) সমর্থন করে, যাতে আপনি বিভিন্ন ভাষায় অ্যাপ্লিকেশনটি ব্যবহারযোগ্য করতে পারেন। এই ফিচারটি অ্যাপ্লিকেশনকে বিশ্বের বিভিন্ন অঞ্চলের জন্য উপযোগী করতে সহায়ক, যেখানে একাধিক ভাষা এবং সংস্কৃতি সমর্থিত থাকে।

Tapestry-তে multi-language support প্রদান করতে, আপনাকে দুটি গুরুত্বপূর্ণ দিক বিবেচনায় নিতে হবে:

  • Localization: নির্দিষ্ট ভাষা এবং সংস্কৃতির জন্য ডেটা, বার্তা, এবং ইউআই উপাদানগুলো কাস্টমাইজ করা।
  • Internationalization: অ্যাপ্লিকেশনকে একাধিক ভাষার জন্য প্রস্তুত করা, যাতে এটি বিভিন্ন অঞ্চলের ভাষা এবং সংস্কৃতির সাথে সামঞ্জস্যপূর্ণ হয়।

এই টিউটোরিয়ালে, আমরা দেখব কীভাবে multi-language support তৈরি করা যায়, যেখানে আপনি একাধিক ভাষায় অ্যাপ্লিকেশন প্রদর্শন করতে পারবেন।


ধাপ ১: Tapestry Localization সাপোর্ট কনফিগারেশন

Tapestry তে localization এবং internationalization সমর্থন করার জন্য, প্রথমে আপনাকে resource files তৈরি করতে হবে, যেখানে আপনি বিভিন্ন ভাষার জন্য বার্তা এবং টেক্সট কনফিগার করবেন।

১.1. Resource Bundle তৈরি

Tapestry তে, .properties ফাইল ব্যবহার করে আপনি ভাষার নির্দিষ্ট বার্তা এবং কনটেন্ট কনফিগার করতে পারেন। সাধারণত, messages.properties নামের একটি ফাইল রাখা হয়, যা ডিফল্ট ভাষার বার্তা সংরক্ষণ করে, এবং অন্যান্য ভাষার জন্য আলাদা properties ফাইল রাখা হয়।

  • messages.properties (ডিফল্ট ভাষা, যেমন ইংরেজি):
welcome.message=Welcome to the Tapestry Application
login.button=Login
  • messages_fr.properties (ফরাসি ভাষা):
welcome.message=Bienvenue dans l'application Tapestry
login.button=Connexion

এখানে:

  • messages.properties হল ডিফল্ট (ইংরেজি) বার্তা।
  • messages_fr.properties ফাইলটি ফরাসি ভাষার জন্য কনফিগার করা।

১.2. Tapestry তে Localization সঠিকভাবে লোড করা

Tapestry আপনাকে Resource Bundle ব্যবহার করার সুবিধা দেয়, যা ফাইলগুলো থেকে ভাষা নির্ধারণ করে বার্তা লোড করে।

Tapestry-তে ভাষা সেট করার জন্য আপনি locale সেট করতে পারেন এবং সেই অনুযায়ী প্রয়োজনীয় resource bundles ব্যবহার করতে পারেন।

web.xml ফাইলের মধ্যে locale এবং bundle কনফিগার করা যেতে পারে:

<filter>
    <filter-name>Locale Filter</filter-name>
    <filter-class>org.apache.tapestry5.services.locale.DefaultLocale</filter-class>
    <init-param>
        <param-name>defaultLocale</param-name>
        <param-value>en_US</param-value>
    </init-param>
</filter>

<filter-mapping>
    <filter-name>Locale Filter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

এটি en_US (ইংরেজি, মার্কিন যুক্তরাষ্ট্র) ডিফল্ট লোকেল হিসেবে সেট করবে। আপনি যখন অন্য ভাষা ব্যবহার করতে চান, তখন locale পরিবর্তন করতে পারেন, যেমন fr_FR (ফরাসি, ফ্রান্স)।


ধাপ ২: Multi-language Support তৈরি করা

Tapestry তে একাধিক ভাষা সমর্থন করার জন্য, আপনার resource bundles এবং UI কম্পোনেন্টগুলোকে এমনভাবে কনফিগার করতে হবে যাতে এটি স্বয়ংক্রিয়ভাবে ভাষা পরিবর্তন করতে পারে। এটি করতে, আপনি সাধারণত ব্যবহারকারীর ভাষা নির্বাচন করার জন্য একটি language switcher ব্যবহার করবেন।

২.1. Language Switcher তৈরি করা

একটি সিম্পল language switcher তৈরি করুন যা ব্যবহারকারীদের তাদের পছন্দমতো ভাষা নির্বাচন করতে দেয়।

language-switcher.tml:

<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_3.xsd">
    <head>
        <title>Language Switcher</title>
    </head>
    <body>
        <h2><t:message key="welcome.message"/></h2>

        <t:select t:id="languageSelect" value="locale" zone="contentZone">
            <t:option value="en_US">English</t:option>
            <t:option value="fr_FR">Français</t:option>
        </t:select>

        <h3><t:message key="login.button"/></h3>
    </body>
</html>

এখানে:

  • <t:message key="welcome.message"/>: Tapestry তে messages.properties ফাইল থেকে বার্তা লোড করার জন্য ব্যবহার করা হয়।
  • <t:select>: এটি একটি ড্রপডাউন তৈরি করবে, যেখানে ব্যবহারকারী ভাষা নির্বাচন করতে পারবেন। নির্বাচিত ভাষার উপর ভিত্তি করে, Tapestry রিসোর্স ফাইল থেকে বার্তা লোড করবে।

২.2. Locale নির্বাচন এবং পেজ রিফ্রেশ

তবে, ব্যবহারকারীরা যখন ভাষা পরিবর্তন করবেন, তখন পেজ রিফ্রেশ হবে এবং নতুন ভাষার কনটেন্ট দেখানো হবে। এটি সাধারণত zone update বা AJAX এর মাধ্যমে করা যেতে পারে।

UserPage.java (Language Switcher Logic):

package com.example.pages;

import org.apache.tapestry5.annotations.Property;
import org.apache.tapestry5.annotations.Inject;
import org.apache.tapestry5.ioc.annotations.Symbol;

public class UserPage {

    @Property
    private String locale;

    @Inject
    @Symbol("defaultLocale")
    private String defaultLocale;

    // Constructor to initialize default language
    public UserPage() {
        locale = defaultLocale; // Set default locale on page load
    }

    // Method to handle language change
    public Object onValueChangedFromLanguageSelect(String newLocale) {
        locale = newLocale; // Update locale based on user selection
        return null;  // No page refresh required, use AJAX
    }
}

এখানে:

  • onValueChangedFromLanguageSelect() মেথডটি ড্রপডাউন থেকে নির্বাচিত নতুন ভাষা গ্রহণ করে এবং সেটি locale প্রপার্টিতে আপডেট করে। AJAXের মাধ্যমে ভাষা পরিবর্তন হবে এবং নতুন ভাষার কনটেন্ট দেখাবে।

ধাপ ৩: Resource Bundle থেকে বার্তা রেন্ডার করা

Tapestry-এর message কম্পোনেন্টের মাধ্যমে আপনি রিসোর্স ফাইল থেকে বার্তা রেন্ডার করতে পারেন, যা ভাষা অনুযায়ী স্বয়ংক্রিয়ভাবে পরিবর্তিত হয়।

message.tml:

<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_3.xsd">
    <head>
        <title>Localized Content</title>
    </head>
    <body>
        <h2><t:message key="welcome.message"/></h2>
        <h3><t:message key="login.button"/></h3>
    </body>
</html>

এখানে:

  • <t:message key="welcome.message"/>: Tapestry এই কম্পোনেন্টের মাধ্যমে রিসোর্স ফাইল থেকে welcome.message বার্তা লোড করবে এবং এটি ভাষা অনুযায়ী পরিবর্তিত হবে।

সারাংশ

Apache Tapestry তে multi-language support প্রদান করা খুবই সহজ। আপনি resource bundles ব্যবহার করে ভাষার ভিত্তিতে কনটেন্ট এবং বার্তা পরিবর্তন করতে পারেন এবং language switcher ব্যবহার করে ব্যবহারকারীকে বিভিন্ন ভাষা নির্বাচন করার সুযোগ দিতে পারেন। Tapestry তে localization এবং internationalization সমর্থনের মাধ্যমে অ্যাপ্লিকেশনটি বিশ্বের বিভিন্ন ভাষার সাথে সামঞ্জস্যপূর্ণ করা যায়, যা আপনার অ্যাপ্লিকেশনকে আরো বিশ্বজনীন এবং ব্যবহারকারী-বান্ধব করে তোলে।

Content added By
Promotion