Passay লাইব্রেরিতে MessageResolver ইন্টারফেস ব্যবহার করে ডিফল্ট ত্রুটি বার্তাগুলি কাস্টমাইজ বা বিভিন্ন ভাষায় প্রদর্শন করা যায়। এটি বিশেষত দরকার হয় যখন আপনি একটি মাল্টি-ল্যাঙ্গুয়াল অ্যাপ্লিকেশন তৈরি করছেন এবং ব্যবহারকারীদের তাদের স্থানীয় ভাষায় বার্তা প্রদান করতে চান।
MessageResolver কী?
MessageResolver ইন্টারফেসটি পাসওয়ার্ড যাচাই ত্রুটির বার্তা সমাধান (resolve) করার একটি উপায় প্রদান করে। Passay এর ডিফল্ট MessageResolver হলো DefaultMessageResolver, যা ডিফল্ট বার্তা ফাইল থেকে বার্তা লোড করে। তবে আপনি একটি কাস্টম MessageResolver ব্যবহার করে নিজের ভাষার বার্তা সরবরাহ করতে পারেন।
উদাহরণ: কাস্টম MessageResolver ব্যবহার করা
নিচে দেখানো হয়েছে কীভাবে কাস্টম বার্তা সংজ্ঞায়িত করে ব্যবহার করা যায়:
1. Custom MessageResolver তৈরি করুন
import org.passay.MessageResolver;
import java.util.HashMap;
import java.util.Map;
public class CustomMessageResolver implements MessageResolver {
private final Map<String, String> messages;
public CustomMessageResolver() {
messages = new HashMap<>();
// এখানে বার্তা সংজ্ঞায়িত করুন
messages.put("TOO_SHORT", "পাসওয়ার্ড খুব ছোট। কমপক্ষে {0} অক্ষর প্রয়োজন।");
messages.put("TOO_LONG", "পাসওয়ার্ড খুব বড়। সর্বাধিক {0} অক্ষর অনুমোদিত।");
messages.put("INSUFFICIENT_UPPERCASE", "পাসওয়ার্ডে অন্তত {0} টি বড় হাতের অক্ষর থাকা প্রয়োজন।");
messages.put("INSUFFICIENT_DIGIT", "পাসওয়ার্ডে অন্তত {0} টি সংখ্যা থাকা প্রয়োজন।");
}
@Override
public String getMessage(String key) {
return messages.getOrDefault(key, "ত্রুটি: বার্তা পাওয়া যায়নি।");
}
@Override
public String getMessage(String key, String... params) {
String message = getMessage(key);
for (int i = 0; i < params.length; i++) {
message = message.replace("{" + i + "}", params[i]);
}
return message;
}
}
2. PasswordValidator এ MessageResolver যোগ করুন
import org.passay.*;
import java.util.Arrays;
public class CustomMessageResolverExample {
public static void main(String[] args) {
// CustomMessageResolver ব্যবহার
MessageResolver resolver = new CustomMessageResolver();
PasswordValidator validator = new PasswordValidator(resolver, Arrays.asList(
new LengthRule(8, 16), // দৈর্ঘ্য 8-16
new UppercaseCharacterRule(1), // অন্তত ১টি বড় হাতের অক্ষর
new DigitCharacterRule(1) // অন্তত ১টি সংখ্যা
));
String password = "abc";
RuleResult result = validator.validate(new PasswordData(password));
if (result.isValid()) {
System.out.println("পাসওয়ার্ড বৈধ!");
} else {
System.out.println("পাসওয়ার্ড অবৈধ। কারণ:");
validator.getMessages(result).forEach(System.out::println);
}
}
}
3. MessageResolver-এর মাধ্যমে মাল্টি-ল্যাঙ্গুয়াল সাপোর্ট
আপনি ভিন্ন ভাষার বার্তাগুলি ResourceBundleMessageResolver বা CustomMessageResolver ব্যবহার করে সংজ্ঞায়িত করতে পারেন। উদাহরণ:
ResourceBundleMessageResolver উদাহরণ:
import org.passay.ResourceBundleMessageResolver;
import java.util.Locale;
public class MultiLanguageSupport {
public static void main(String[] args) {
// বাংলা ভাষার জন্য ResourceBundle
ResourceBundleMessageResolver resolver = new ResourceBundleMessageResolver(
ResourceBundle.getBundle("messages", new Locale("bn"))
);
// আপনার PasswordValidator এ resolver যুক্ত করুন।
}
}
বার্তা ফাইল (messages_bn.properties):
TOO_SHORT=পাসওয়ার্ড খুব ছোট। কমপক্ষে {0} অক্ষর প্রয়োজন।
TOO_LONG=পাসওয়ার্ড খুব বড়। সর্বাধিক {0} অক্ষর অনুমোদিত।
INSUFFICIENT_UPPERCASE=পাসওয়ার্ডে অন্তত {0} টি বড় হাতের অক্ষর থাকা প্রয়োজন।
INSUFFICIENT_DIGIT=পাসওয়ার্ডে অন্তত {0} টি সংখ্যা থাকা প্রয়োজন।
উপসংহার
Passay-এর MessageResolver ইন্টারফেস ব্যবহার করে আপনি কাস্টম বার্তা তৈরি করতে এবং মাল্টি-ল্যাঙ্গুয়াল সাপোর্ট যোগ করতে পারেন। এটি আপনার অ্যাপ্লিকেশনের ব্যবহারযোগ্যতা বাড়ায় এবং ব্যবহারকারীদের তাদের স্থানীয় ভাষায় আরও ভালো অভিজ্ঞতা প্রদান করে।
Read more