Custom ResourceBundle Class তৈরি করা

i18n এর জন্য Custom Locale এবং ResourceBundle তৈরি - জাভা ইন্টারন্যাশনালাইজেশন (Java Internalization) - Java Technologies

255

Java ইন্টারন্যাশনালাইজেশন (i18n) এর একটি গুরুত্বপূর্ণ অংশ হল ResourceBundle। এটি ব্যবহারকারীকে বিভিন্ন ভাষায় এবং অঞ্চলে অ্যাপ্লিকেশনকে কাস্টমাইজ করার সুযোগ দেয়। ResourceBundle সাধারণত একটি প্রপার্টি ফাইল বা XML ফাইল হিসেবে থাকে যেখানে বিভিন্ন ভাষার জন্য কীগুলোর মান সংরক্ষিত থাকে।

কিন্তু কখনও কখনও আপনার নিজস্ব কাস্টম ResourceBundle ক্লাস তৈরি করার প্রয়োজন হতে পারে, যেখানে আপনাকে বিশেষ ধরনের ডেটা প্রসেসিং বা আরও উন্নত কার্যকারিতা যোগ করতে হবে।

এখানে একটি কাস্টম ResourceBundle ক্লাস তৈরি করার উদাহরণ দেওয়া হল:

কাস্টম ResourceBundle ক্লাস তৈরি করা:

  1. ResourceBundle এক্সটেন্ড করা: প্রথমত, একটি কাস্টম ক্লাস তৈরি করতে হবে যা ResourceBundle ক্লাসকে এক্সটেন্ড করবে।
  2. ডাটা লোডিং কৌশল: এখানে, আমরা কাস্টম ডাটা লোড করার জন্য একটি ফাইল বা ডেটাবেস বা অন্য কোনো সোর্স ব্যবহার করতে পারি।
  3. কাস্টম বিল্ট-ইন ফাংশনালিটি যুক্ত করা: প্রয়োজনে getObject(), getString() বা অন্যান্য ফাংশন কাস্টমাইজ করা হতে পারে।

উদাহরণ:

এখানে একটি উদাহরণ দেওয়া হলো কাস্টম ResourceBundle ক্লাস তৈরি করার:

import java.util.*;

public class CustomResourceBundle extends ResourceBundle {

    private static final String[][] data = {
        {"greeting", "Hello"},
        {"farewell", "Goodbye"}
    };

    @Override
    protected Object handleGetObject(String key) {
        // কাস্টম ডেটা অ্যারে থেকে কীগুলোর মান খোঁজা
        for (String[] entry : data) {
            if (entry[0].equals(key)) {
                return entry[1];
            }
        }
        return null;
    }

    @Override
    public Enumeration<String> getKeys() {
        // কীগুলোর একটি Enumeration প্রদান করা
        return new Enumeration<String>() {
            private int index = 0;

            @Override
            public boolean hasMoreElements() {
                return index < data.length;
            }

            @Override
            public String nextElement() {
                return data[index++][0];
            }
        };
    }

    public static void main(String[] args) {
        // কাস্টম ResourceBundle তৈরি করা
        ResourceBundle bundle = new CustomResourceBundle();

        // কিছু মান প্রিন্ট করা
        System.out.println(bundle.getString("greeting"));  // Output: Hello
        System.out.println(bundle.getString("farewell"));  // Output: Goodbye
    }
}

ব্যাখ্যা:

  1. CustomResourceBundle:
    • এই ক্লাসটি ResourceBundle ক্লাস থেকে এক্সটেন্ড করা হয়েছে এবং handleGetObject() এবং getKeys() মেথডগুলো কাস্টমাইজ করা হয়েছে।
  2. handleGetObject():
    • এটি একটি কাস্টম ডাটা অ্যারে থেকে একটি নির্দিষ্ট কী অনুসারে মান প্রদান করে।
  3. getKeys():
    • এই মেথডটি ডাটা অ্যারে থেকে কীগুলোর একটি Enumeration প্রদান করে, যা ResourceBundle এর জন্য প্রয়োজনীয়।
  4. main():
    • এখানে একটি কাস্টম ResourceBundle তৈরি করা হয়েছে এবং কিছু স্ট্রিং মান প্রিন্ট করা হয়েছে।

কাস্টম ResourceBundle এর সুবিধা:

  • ব্যবহারকারীর জন্য কাস্টম ডাটা লোডিং: যখন আপনাকে কোনো নির্দিষ্ট উৎস (যেমন ডেটাবেস বা কাস্টম ফাইল) থেকে ডেটা লোড করতে হয়, তখন কাস্টম ResourceBundle ক্লাস খুব উপকারী হতে পারে।
  • প্রসেসিং লজিক: যদি আপনাকে কিছু অতিরিক্ত প্রসেসিং (যেমন ডেটা ফরম্যাটিং বা কাস্টম ক্যালকুলেশন) করতে হয়, তাহলে আপনি সেটি handleGetObject() মেথডে করতে পারেন।

এই পদ্ধতিটি আপনি যখন সাধারণ Property ফাইল বা XML ফাইল ব্যবহার করতে চান না, বা যখন আপনাকে বিশেষ কাস্টম প্রক্রিয়া প্রয়োগ করতে হয়, তখন খুবই উপকারী।

Content added By
Promotion

Are you sure to start over?

Loading...