MessageFormat ক্লাসের ব্যবহার

Message Formatting এবং Pluralization - জাভা ইন্টারন্যাশনালাইজেশন (Java Internalization) - Java Technologies

276

MessageFormat ক্লাস Java ইন্টারন্যাশনালাইজেশন (i18n) এর জন্য একটি গুরুত্বপূর্ণ ক্লাস, যা স্ট্রিং ফর্ম্যাটিং এবং স্থানীয়করণ (localization) সম্পর্কিত কাজকে সহজ করে তোলে। এটি স্ট্রিং এর মধ্যে স্থানধারক (placeholders) ব্যবহার করে অর্গানাইজড টেক্সট তৈরি করতে সহায়ক, যেমন সংখ্যা, তারিখ, সময়, বা কাস্টম ডেটা।

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

MessageFormat এর প্রধান বৈশিষ্ট্য:

  1. Placholder Substitution:
    • MessageFormat ক্লাসটি {} স্নিপেট ব্যবহার করে প্লেসহোল্ডার তৈরি করতে সক্ষম, যেখানে রানটাইমে ডেটা সন্নিবেশিত করা যায়।
  2. Locale-Sensitive:
    • এটি স্থানীয়করণের (localization) জন্য কাজ করে, যার মাধ্যমে আপনার অ্যাপ্লিকেশন বিভিন্ন ভাষা এবং আঞ্চলিক কনভেনশন অনুসারে আউটপুট জেনারেট করতে পারে (যেমন সংখ্যার ফরম্যাট, তারিখের ফরম্যাট ইত্যাদি)।
  3. Dynamic Text Formatting:
    • এটি বিভিন্ন ধরনের ডেটা যেমন String, Date, Number ইত্যাদি ফর্ম্যাট করতে সাহায্য করে।

MessageFormat Class এর Syntax:

public class MessageFormat {
    public MessageFormat(String pattern);
    public String format(Object[] arguments);
    public Object parse(String source) throws ParseException;
}
  • format(): একটি প্যাটার্ন স্ট্রিং গ্রহণ করে এবং একটি বস্তু array নিয়ে আউটপুট স্ট্রিং তৈরি করে।
  • parse(): একটি স্ট্রিং গ্রহণ করে এবং এটি কাস্টম ডেটা অবজেক্টে পরিণত করতে পারে।

MessageFormat উদাহরণ:

1. Basic MessageFormat Example (Placing Dynamic Data)

import java.text.MessageFormat;

public class MessageFormatExample {
    public static void main(String[] args) {
        // MessageFormat প্যাটার্ন তৈরি
        String pattern = "Hello {0}, welcome to {1}!";
        
        // MessageFormat instance তৈরি
        MessageFormat messageFormat = new MessageFormat(pattern);
        
        // ডাইনামিক ডেটা প্রদান
        Object[] arguments = {"John", "Java"};
        
        // আউটপুট তৈরি করা
        String message = messageFormat.format(arguments);
        
        // আউটপুট প্রিন্ট করা
        System.out.println(message);
    }
}

ব্যাখ্যা:

  • এখানে MessageFormat প্যাটার্নে {0} এবং {1} স্নিপেট ব্যবহার করা হয়েছে।
  • arguments অ্যারের মধ্যে "John" এবং "Java" সন্নিবেশিত হবে।
  • format() মেথডটি এটি গ্রহণ করে আউটপুট স্ট্রিং তৈরি করবে: "Hello John, welcome to Java!"

আউটপুট:

Hello John, welcome to Java!

2. Number Formatting with MessageFormat

import java.text.MessageFormat;

public class NumberFormattingExample {
    public static void main(String[] args) {
        // Number formatting pattern
        String pattern = "The price is {0, number, currency}";
        
        // MessageFormat instance creation
        MessageFormat messageFormat = new MessageFormat(pattern);
        
        // Dynamic data (number)
        Object[] arguments = {12345.678};
        
        // Output generation
        String message = messageFormat.format(arguments);
        
        // Output printed
        System.out.println(message);
    }
}

ব্যাখ্যা:

  • এখানে number ফরম্যাটিং এবং currency স্টাইল ব্যবহার করা হয়েছে, যা নম্বরকে মুদ্রা আকারে প্রদর্শন করবে।
  • {0, number, currency} প্যাটার্নটি number ফরম্যাটিং দিয়ে currency সিম্বল (যেমন USD, INR) সহ প্রদর্শন করবে।

আউটপুট (locale অনুসারে ভিন্ন হতে পারে):

The price is $12,345.68

3. Date Formatting with MessageFormat

import java.text.MessageFormat;
import java.util.Date;

public class DateFormattingExample {
    public static void main(String[] args) {
        // Date formatting pattern
        String pattern = "The current date and time is {0, date, full}";
        
        // MessageFormat instance creation
        MessageFormat messageFormat = new MessageFormat(pattern);
        
        // Dynamic data (date)
        Object[] arguments = {new Date()};
        
        // Output generation
        String message = messageFormat.format(arguments);
        
        // Output printed
        System.out.println(message);
    }
}

ব্যাখ্যা:

  • এখানে date ফরম্যাটিং ব্যবহৃত হয়েছে যা বর্তমান তারিখ এবং সময়কে full format-এ প্রদর্শন করবে।
  • {0, date, full} প্যাটার্নটি Date অবজেক্ট গ্রহণ করে এবং এটি একটি পূর্ণ তারিখের ফরম্যাটে রূপান্তরিত করবে।

আউটপুট (locale অনুসারে ভিন্ন হতে পারে):

The current date and time is Thursday, January 1, 2024 5:30:00 PM UTC

MessageFormat এর সুবিধা:

  1. Locale-sensitive Formatting:
    • MessageFormat ক্লাস স্থানীয়করণের জন্য শক্তিশালী ফিচার প্রদান করে। এটি dates, numbers, currencies এবং messages বিভিন্ন ভাষায় বা আঞ্চলিক কনভেনশন অনুসারে ফরম্যাট করতে সক্ষম।
  2. Reusability:
    • প্যাটার্নটি পুনরায় ব্যবহারযোগ্য। আপনি একই প্যাটার্নে বিভিন্ন ধরনের ডেটা সন্নিবেশিত করতে পারেন।
  3. Easy String Formatting:
    • ডাইনামিক ডেটা ইনজেকশন সহজ এবং পরিষ্কারভাবে পরিচালনা করা যায়।

MessageFormat এর সীমাবদ্ধতা:

  1. Complexity with Multiple Placeholders:
    • যদি প্যাটার্নে অনেকগুলো প্লেসহোল্ডার থাকে, তাহলে এটি একটু জটিল হতে পারে। তবে, এই সমস্যা MessageFormat এর সাহায্যে locale-based formatting ব্যবহার করে সমাধান করা যায়।
  2. Limited Support for Non-Primitive Data:
    • MessageFormat ক্লাসটি মূলত primitive data types এবং সাধারণ objects ফরম্যাট করতে ব্যবহৃত হয়। যদি complex data structures (যেমন, list of objects) এর জন্য স্ট্রিং তৈরি করতে হয়, তাহলে আপনাকে custom formatting করতে হতে পারে।

  • MessageFormat Java ইন্টারন্যাশনালাইজেশন (i18n) এবং স্থানীয়করণের (l10n) জন্য একটি শক্তিশালী ক্লাস, যা dynamic text formatting এবং locale-sensitive আউটপুট তৈরি করতে সাহায্য করে।
  • এটি number, date, currency, এবং সাধারণ text ফরম্যাটিং করতে ব্যবহার করা হয়।
  • MessageFormat ক্লাসটি টেক্সট স্ট্রিংয়ে placeholders ব্যবহার করে ডাইনামিক ডেটা ইনজেক্ট করার জন্য কার্যকরী এবং পুনরায় ব্যবহারযোগ্য।

MessageFormat কাস্টমাইজড মেসেজ তৈরি করতে এবং তাদের আঞ্চলিকভাবে ফরম্যাট করার জন্য অত্যন্ত গুরুত্বপূর্ণ।

Content added By
Promotion

Are you sure to start over?

Loading...