Java ইন্টারন্যাশনালাইজেশন (i18n) এর একটি গুরুত্বপূর্ণ অংশ হল ResourceBundle। এটি ব্যবহারকারীকে বিভিন্ন ভাষায় এবং অঞ্চলে অ্যাপ্লিকেশনকে কাস্টমাইজ করার সুযোগ দেয়। ResourceBundle সাধারণত একটি প্রপার্টি ফাইল বা XML ফাইল হিসেবে থাকে যেখানে বিভিন্ন ভাষার জন্য কীগুলোর মান সংরক্ষিত থাকে।
কিন্তু কখনও কখনও আপনার নিজস্ব কাস্টম ResourceBundle ক্লাস তৈরি করার প্রয়োজন হতে পারে, যেখানে আপনাকে বিশেষ ধরনের ডেটা প্রসেসিং বা আরও উন্নত কার্যকারিতা যোগ করতে হবে।
এখানে একটি কাস্টম ResourceBundle ক্লাস তৈরি করার উদাহরণ দেওয়া হল:
কাস্টম ResourceBundle ক্লাস তৈরি করা:
- ResourceBundle এক্সটেন্ড করা: প্রথমত, একটি কাস্টম ক্লাস তৈরি করতে হবে যা
ResourceBundleক্লাসকে এক্সটেন্ড করবে। - ডাটা লোডিং কৌশল: এখানে, আমরা কাস্টম ডাটা লোড করার জন্য একটি ফাইল বা ডেটাবেস বা অন্য কোনো সোর্স ব্যবহার করতে পারি।
- কাস্টম বিল্ট-ইন ফাংশনালিটি যুক্ত করা: প্রয়োজনে
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
}
}
ব্যাখ্যা:
- CustomResourceBundle:
- এই ক্লাসটি
ResourceBundleক্লাস থেকে এক্সটেন্ড করা হয়েছে এবংhandleGetObject()এবংgetKeys()মেথডগুলো কাস্টমাইজ করা হয়েছে।
- এই ক্লাসটি
- handleGetObject():
- এটি একটি কাস্টম ডাটা অ্যারে থেকে একটি নির্দিষ্ট কী অনুসারে মান প্রদান করে।
- getKeys():
- এই মেথডটি ডাটা অ্যারে থেকে কীগুলোর একটি
Enumerationপ্রদান করে, যাResourceBundleএর জন্য প্রয়োজনীয়।
- এই মেথডটি ডাটা অ্যারে থেকে কীগুলোর একটি
- main():
- এখানে একটি কাস্টম
ResourceBundleতৈরি করা হয়েছে এবং কিছু স্ট্রিং মান প্রিন্ট করা হয়েছে।
- এখানে একটি কাস্টম
কাস্টম ResourceBundle এর সুবিধা:
- ব্যবহারকারীর জন্য কাস্টম ডাটা লোডিং: যখন আপনাকে কোনো নির্দিষ্ট উৎস (যেমন ডেটাবেস বা কাস্টম ফাইল) থেকে ডেটা লোড করতে হয়, তখন কাস্টম
ResourceBundleক্লাস খুব উপকারী হতে পারে। - প্রসেসিং লজিক: যদি আপনাকে কিছু অতিরিক্ত প্রসেসিং (যেমন ডেটা ফরম্যাটিং বা কাস্টম ক্যালকুলেশন) করতে হয়, তাহলে আপনি সেটি
handleGetObject()মেথডে করতে পারেন।
এই পদ্ধতিটি আপনি যখন সাধারণ Property ফাইল বা XML ফাইল ব্যবহার করতে চান না, বা যখন আপনাকে বিশেষ কাস্টম প্রক্রিয়া প্রয়োগ করতে হয়, তখন খুবই উপকারী।
Read more