Java Internationalization (i18n) হল একটি প্রক্রিয়া যা সফটওয়্যার অ্যাপ্লিকেশন বা সিস্টেমকে বিভিন্ন ভাষা, অঞ্চল এবং সাংস্কৃতিক রীতি অনুসারে সহজে কাস্টমাইজ বা localize (l10n) করার জন্য প্রস্তুত করে। i18n এর মাধ্যমে একটি অ্যাপ্লিকেশন এমনভাবে তৈরি করা হয় যে, সেটি বিভিন্ন ভাষা এবং অঞ্চলের জন্য কনফিগারেশন বা স্থানীয়করণ ছাড়া কাজ করতে পারে।
i18n শব্দটির মধ্যে "i" প্রথম অক্ষর এবং "n" শেষ অক্ষর, এবং 18 হলো মাঝের অক্ষরের সংখ্যা, যা এটির নামকরণের কারণ। এই প্রক্রিয়া একটি অ্যাপ্লিকেশনকে স্থানীয় ভাষা বা স্থানীয় প্রয়োজনীয়তার ভিত্তিতে পরবর্তীতে কাস্টমাইজ করার জন্য প্রস্তুত করে।
i18n এর উদ্দেশ্য:
- ভাষাগত সমর্থন: অ্যাপ্লিকেশনটি একাধিক ভাষায় কাজ করতে সক্ষম হয়, যেমন ইংরেজি, স্প্যানিশ, চীনা, জাপানি ইত্যাদি।
- দেশীয় বা স্থানীয় ফরম্যাটিং: তারিখ, সময়, মুদ্রা, নম্বর, ঠিকানা ফরম্যাট ইত্যাদি স্থানীয় সংস্কৃতি অনুযায়ী মানানসই হয়।
- অনুবাদ এবং কনফিগারেশন সহজীকরণ: স্থানীয় ভাষায় ব্যবহারকারী ইন্টারফেসের অনুবাদ সহজতর করা যায়।
i18n এর প্রক্রিয়া:
- Text Externalization (ইন্টারফেসের টেক্সটগুলো আলাদা করা):
- সফটওয়্যারটির সমস্ত স্ট্রিং, বার্তা এবং টেক্সট ফাইল থেকে আলাদা করা হয়, যাতে এগুলি একটি কনফিগারেশন ফাইলে রাখা যায়।
- Java-তে ResourceBundle এর মাধ্যমে স্ট্রিংগুলি পৃথক করা হয়।
- Locale-Dependent Formatting:
- স্থানীয় সংস্কৃতির অনুসারে dates, times, currencies, numbers ইত্যাদি ফরম্যাট করা হয়। এটি
Localeক্লাসের মাধ্যমে সম্পন্ন হয়।
- স্থানীয় সংস্কৃতির অনুসারে dates, times, currencies, numbers ইত্যাদি ফরম্যাট করা হয়। এটি
- Character Encoding:
- সঠিকভাবে বিভিন্ন ভাষার ক্যারেক্টার সঠিকভাবে প্রদর্শনের জন্য সঠিক character encoding নির্বাচন করা হয় (যেমন UTF-8, UTF-16 ইত্যাদি)।
- Time Zone Handling:
- বিভিন্ন অঞ্চল বা দেশের জন্য সঠিক time zone ব্যবস্থাপনা করা হয়।
Java তে i18n এর ভূমিকা:
Java-তে Internationalization (i18n) অত্যন্ত গুরুত্বপূর্ণ কারণ Java এর বিভিন্ন বৈশিষ্ট্য এবং API গুলি বিভিন্ন ভাষা ও সংস্কৃতির সমর্থন দিতে সক্ষম, যা বিশ্বব্যাপী অ্যাপ্লিকেশন তৈরি করার জন্য অত্যন্ত প্রয়োজনীয়।
- ResourceBundle ব্যবহার:
- Java-তে ResourceBundle একটি ক্লাস যা ভাষাগত এবং সাংস্কৃতিক তথ্য ধারণ করে। একটি অ্যাপ্লিকেশনের সমস্ত স্ট্রিং, বাটন, মেনু ইত্যাদির জন্য বিভিন্ন ভাষায় ফাইল সংরক্ষণ করা হয়, এবং সেই ফাইলগুলি ResourceBundle এর মাধ্যমে অ্যাক্সেস করা হয়।
- Locale ক্লাস:
- Java-তে Locale ক্লাস ব্যবহৃত হয় বিভিন্ন অঞ্চলের জন্য কাস্টমাইজড তথ্য এবং ফরম্যাটিং প্রদান করার জন্য। এটি country, language, এবং variant এর উপর ভিত্তি করে স্থানীয় ভাষা এবং সংস্কৃতি নির্দেশ করে।
- Character Encoding:
- Java সমস্ত ভাষার জন্য UTF-8, UTF-16 এবং অন্যান্য এনকোডিং সাপোর্ট করে, যাতে আন্তর্জাতিক ক্যারেক্টারগুলো সঠিকভাবে প্রদর্শিত হয়।
- Date, Time, and Currency Formatting:
SimpleDateFormat,NumberFormat,CurrencyএবংDateFormatক্লাসগুলো ব্যবহার করে স্থানীয় ভাষা এবং সংস্কৃতির জন্য তারিখ, সময়, এবং মুদ্রা ফরম্যাট করা হয়।
Java তে i18n এর উদাহরণ:
1. ResourceBundle এর মাধ্যমে Localization:
ResourceBundle ব্যবহার করে বিভিন্ন ভাষায় একটি স্ট্রিং ফাইল লোড করা যায়। নিম্নলিখিত উদাহরণটি একটি ResourceBundle ব্যবহার করে ইংরেজি এবং ফরাসি ভাষার স্ট্রিং দেখাবে।
- messages.properties (English):
greeting=Hello
farewell=Goodbye
- messages_fr.properties (French):
greeting=Bonjour
farewell=Au revoir
- Java Code:
import java.util.*;
public class I18nExample {
public static void main(String[] args) {
// Locale অনুযায়ী ResourceBundle লোড
Locale currentLocale = Locale.getDefault(); // সিস্টেমের ডিফল্ট লোকাল
ResourceBundle messages = ResourceBundle.getBundle("messages", currentLocale);
// Locale অনুযায়ী স্ট্রিং আউটপুট
System.out.println(messages.getString("greeting"));
System.out.println(messages.getString("farewell"));
}
}
ব্যাখ্যা:
- ResourceBundle-এর মাধ্যমে নির্দিষ্ট লোকাল অনুযায়ী স্ট্রিংগুলি লোড করা হয়। এখানে messages.properties ফাইলটি ব্যবহৃত হচ্ছে। যদি সিস্টেমের লোকাল English হয় তবে
messages.propertiesফাইলটি লোড হবে, আর যদি লোকাল French হয় তবেmessages_fr.propertiesফাইলটি লোড হবে।
আউটপুট (English Locale):
Hello
Goodbye
আউটপুট (French Locale):
Bonjour
Au revoir
2. Locale এবং Date/Time Formatting:
import java.text.*;
import java.util.*;
public class LocaleExample {
public static void main(String[] args) {
// Locale অনুযায়ী Date ফরম্যাটিং
Locale locale = new Locale("fr", "FR"); // ফরাসি ভাষা, ফ্রান্স অঞ্চল
DateFormat dateFormat = DateFormat.getDateInstance(DateFormat.LONG, locale);
Date date = new Date();
// Date প্রিন্ট করা
System.out.println(dateFormat.format(date));
}
}
ব্যাখ্যা:
- DateFormat.getDateInstance() মেথডটি ব্যবহার করে, বিভিন্ন অঞ্চলের জন্য তারিখের ফরম্যাট কাস্টমাইজ করা হয়েছে।
আউটপুট (French Locale):
19 décembre 2024
i18n এবং l10n এর মধ্যে পার্থক্য:
- Internationalization (i18n):
- i18n হল এমন একটি প্রক্রিয়া যার মাধ্যমে সফটওয়্যারটি পৃথিবীর বিভিন্ন ভাষা এবং সাংস্কৃতিক বৈশিষ্ট্য অনুসারে কাস্টমাইজ করা যায়, যা পরে স্থানীয়করণের জন্য প্রস্তুত হতে পারে।
- উদাহরণ: বিভিন্ন ভাষায় ফাইল স্ট্রিং আলাদা করা, তারিখ ও সময়ের স্থানীয় ফরম্যাটিং।
- Localization (l10n):
- l10n হল i18n এর পরবর্তী পদক্ষেপ, যেখানে সফটওয়্যারটি নির্দিষ্ট একটি ভাষা বা অঞ্চলের জন্য কাস্টমাইজ করা হয়।
- উদাহরণ: ResourceBundle এর মাধ্যমে ভাষার স্ট্রিং প্রতিস্থাপন এবং তারিখ/মুদ্রা ফরম্যাটিং আপডেট করা।
- Java Internationalization (i18n) হল এমন একটি প্রক্রিয়া যার মাধ্যমে সফটওয়্যারটি বিভিন্ন ভাষা, সংস্কৃতি, এবং অঞ্চলের জন্য প্রস্তুত করা হয়, যাতে সেটি পরবর্তীতে localization (l10n) প্রক্রিয়া মাধ্যমে কাস্টমাইজ করা যায়।
- ResourceBundle, Locale, DateFormat, NumberFormat ক্লাসগুলি Java তে i18n বাস্তবায়নে গুরুত্বপূর্ণ ভূমিকা পালন করে।
- Java-র i18n ক্ষমতা সফটওয়্যারকে বিশ্বব্যাপী বাজারে সহায়ক করতে অত্যন্ত গুরুত্বপূর্ণ।
Read more