Java Internationalization (i18n) হল একটি প্রক্রিয়া যা সফটওয়্যার অ্যাপ্লিকেশন বা সিস্টেমকে বিভিন্ন ভাষায় এবং সংস্কৃতিতে ব্যবহারযোগ্য করে তোলে। ResourceBundle হল Java-তে আন্তর্জাতিককরণ এবং লোকালাইজেশন (i18n এবং l10n) এর জন্য একটি শক্তিশালী এবং গুরুত্বপূর্ণ উপাদান। এটি ভাষা-নির্দিষ্ট স্ট্রিং এবং অন্যান্য কনফিগারেশনগুলি resource files থেকে পড়তে ব্যবহৃত হয়।
ResourceBundle ব্যবহার করে আপনি বিভিন্ন ভাষায় বিভিন্ন টেক্সট এবং মেসেজগুলি সংরক্ষণ এবং পরিচালনা করতে পারেন। এটি Locale-এর সাথে সম্পর্কিত এবং ব্যবহারকারীর পছন্দ অনুযায়ী সঠিক ভাষা এবং সংস্কৃতি অনুযায়ী ডেটা বা টেক্সট রিটার্ন করে।
ResourceBundle এর ধারণা:
ResourceBundle:- এটি একটি অ্যাবস্ট্রাক্ট ক্লাস যা বিভিন্ন ভাষায় স্ট্রিং এবং কনফিগারেশন ডেটা পড়তে এবং সেগুলিকে অ্যাক্সেস করতে ব্যবহৃত হয়।
PropertyResourceBundle:- এটি
ResourceBundleএর একটি কনক্রিট ক্লাস যা.propertiesফাইল থেকে ডেটা লোড করতে ব্যবহৃত হয়।
- এটি
ListResourceBundle:- এটি একটি ভিন্ন ধরনের
ResourceBundleযা Java objects বা arrays থেকে ডেটা সংরক্ষণ করে।
- এটি একটি ভিন্ন ধরনের
ResourceBundle এর সুবিধা:
- Locale-Specific Data:
- এটি locale-specific data (যেমন, স্ট্রিং, মেসেজ ইত্যাদি) ধারণ করে, যা বিভিন্ন ভাষায় বা সংস্কৃতিতে অ্যাপ্লিকেশন পরিচালনা করতে সাহায্য করে।
- Separation of Concerns:
- ResourceBundle এর মাধ্যমে সমস্ত স্থানীয়করণ তথ্য (যেমন স্ট্রিং, মেসেজ) কোড থেকে আলাদা করা যায়, যা কোডের পরিচ্ছন্নতা এবং রক্ষণাবেক্ষণ সহজ করে।
- Dynamic Language Switching:
- ব্যবহারকারী যখন ভাষা পরিবর্তন করতে চান, তখন ResourceBundle সহজেই নতুন Locale অনুযায়ী নতুন স্ট্রিং লোড করতে পারে।
ResourceBundle ব্যবহার করে স্ট্রিং এবং মেসেজ হ্যান্ডল করা:
1. ResourceBundle ফাইল তৈরি করা:
- সাধারণত
.propertiesফাইল ব্যবহার করা হয় স্ট্রিং এবং মেসেজ সংরক্ষণ করার জন্য। উদাহরণস্বরূপ:
messages_en.properties (English)
greeting=Hello, welcome to our application!
farewell=Goodbye, see you soon!
messages_fr.properties (French)
greeting=Bonjour, bienvenue dans notre application!
farewell=Au revoir, à bientôt!
2. ResourceBundle লোড করা এবং স্ট্রিং ব্যবহার করা:
import java.util.*;
public class ResourceBundleExample {
public static void main(String[] args) {
// Locale তৈরি করা
Locale locale = new Locale("en", "US"); // English (United States)
// ResourceBundle লোড করা
ResourceBundle bundle = ResourceBundle.getBundle("messages", locale);
// ResourceBundle থেকে স্ট্রিং আনা
String greeting = bundle.getString("greeting");
String farewell = bundle.getString("farewell");
// স্ট্রিং প্রিন্ট করা
System.out.println(greeting); // Output: Hello, welcome to our application!
System.out.println(farewell); // Output: Goodbye, see you soon!
}
}
ব্যাখ্যা:
Localeতৈরি করা হয়েছে (এখানে ইংলিশ, যুক্তরাষ্ট্রের জন্য)।ResourceBundle.getBundle("messages", locale)দ্বারাmessages_en.propertiesফাইলটি লোড করা হয়েছে।getString("key")মেথড ব্যবহার করে নির্দিষ্ট কীগুলির মান (যেমন, "greeting" এবং "farewell") রিটার্ন করা হয়েছে।
আউটপুট (যদি locale ইংলিশ হয়):
Hello, welcome to our application!
Goodbye, see you soon!
3. অন্য Locale ব্যবহার করা (French):
import java.util.*;
public class ResourceBundleExample {
public static void main(String[] args) {
// Locale তৈরি করা
Locale locale = new Locale("fr", "FR"); // French (France)
// ResourceBundle লোড করা
ResourceBundle bundle = ResourceBundle.getBundle("messages", locale);
// ResourceBundle থেকে স্ট্রিং আনা
String greeting = bundle.getString("greeting");
String farewell = bundle.getString("farewell");
// স্ট্রিং প্রিন্ট করা
System.out.println(greeting); // Output: Bonjour, bienvenue dans notre application!
System.out.println(farewell); // Output: Au revoir, à bientôt!
}
}
ব্যাখ্যা:
- এখানে
Locale("fr", "FR")ব্যবহার করা হয়েছে, যাতে French (France) এর জন্য messages_fr.properties ফাইলটি লোড করা হয়।
আউটপুট (যদি locale ফরাসি হয়):
Bonjour, bienvenue dans notre application!
Au revoir, à bientôt!
ResourceBundle এর বিভিন্ন মেথড:
getBundle(String baseName, Locale locale):- এই মেথডটি baseName এবং locale দ্বারা নির্দিষ্ট ফাইলটি লোড করে।
getString(String key):- এই মেথডটি নির্দিষ্ট key এর মান প্রদান করে।
getObject(String key):- এটি key দ্বারা ইঙ্গিতিত object রিটার্ন করে। এটি
ListResourceBundleএর ক্ষেত্রে ব্যবহার করা যেতে পারে।
- এটি key দ্বারা ইঙ্গিতিত object রিটার্ন করে। এটি
getKeys():- এটি একটি Enumeration প্রদান করে যা ResourceBundle এর সমস্ত কী ধারণ করে।
ResourceBundle এর ব্যবহার:
- Multiple Languages Support:
- আপনি multiple properties files (যেমন, messages_en.properties, messages_fr.properties, ইত্যাদি) তৈরি করে একাধিক ভাষায় স্ট্রিং এবং মেসেজ রাখতে পারেন এবং প্রয়োজনীয় ভাষা অনুযায়ী ডেটা লোড করতে পারেন।
- Dynamic Language Switching:
- ResourceBundle সহজেই ভাষা পরিবর্তনের সময় সিস্টেমের মেসেজগুলি আপডেট করতে পারে, যা ব্যবহৃত Locale অনুযায়ী।
- Separation of Concerns:
- কোডের সাথে মেসেজ এবং স্ট্রিং আলাদা রেখে, আপনি কোডের cleanliness বজায় রাখতে পারেন এবং উন্নত রক্ষণাবেক্ষণ করতে পারেন।
- Support for Different Data Types:
ResourceBundleকেবল স্ট্রিংই নয়, বিভিন্ন objects এবং data typesও স্টোর করতে সক্ষম।
ResourceBundleক্লাস Java তে আন্তর্জাতিককরণ (i18n) এবং স্থানীয়করণ (l10n) পরিচালনার জন্য একটি গুরুত্বপূর্ণ উপাদান।- এটি Locale নির্ধারণ করে এবং বিভিন্ন ভাষায় স্ট্রিং এবং মেসেজ পরিচালনার জন্য
.propertiesফাইল ব্যবহার করে। - ResourceBundle ব্যবহার করে আপনি আপনার অ্যাপ্লিকেশনের স্ট্রিং এবং মেসেজ স্থানীয়করণ করতে পারেন, যা বিভিন্ন ভাষায় এবং সংস্কৃতিতে অ্যাপ্লিকেশনকে উপযোগী করে তোলে।
Read more