Spring Framework এর MessageSource এবং LocaleResolver ব্যবহার

Java EE এবং Spring Framework এ i18n Integration - জাভা ইন্টারন্যাশনালাইজেশন (Java Internalization) - Java Technologies

280

Spring Framework ইন্টারন্যাশনালাইজেশন (i18n) সমর্থন করতে একটি শক্তিশালী এবং নমনীয় পদ্ধতি প্রদান করে। এর মাধ্যমে আপনি বিভিন্ন ভাষায় এবং স্থানিক কনফিগারেশনে কনটেন্ট প্রদর্শন করতে পারেন। Spring-এ MessageSource এবং LocaleResolver দুটি গুরুত্বপূর্ণ কম্পোনেন্ট যা ইন্টারন্যাশনালাইজেশন মেকানিজম পরিচালনা করতে ব্যবহৃত হয়।

১. MessageSource Interface:

Spring Framework-এর MessageSource ইন্টারফেসটি মূলত একটি API যা স্থানিকভাবে নির্দিষ্ট বার্তা বা স্ট্রিং রিসোর্স সরবরাহ করে। এটি বিভিন্ন ভাষার জন্য বার্তা/স্ট্রিং কনটেন্ট প্রদান করে, যেমন ResourceBundle এর মাধ্যমে।

MessageSource এর কার্যকারিতা:

  • এটি বিভিন্ন লোকাল এবং ভাষার জন্য অনুবাদ করা বার্তা প্রদান করে।
  • Spring-এ MessageSource কনফিগারেশন অ্যাপ্লিকেশনটির সমস্ত অনুবাদ প্রয়োজনীয় স্ট্রিং ধারণ করে।

MessageSource কনফিগারেশন:

Spring-এর MessageSource ব্যবহারের জন্য প্রথমে আপনাকে এটি কনফিগার করতে হবে। সাধারণত এটি ResourceBundleMessageSource ক্লাস দ্বারা প্রয়োগ করা হয়।

@Configuration
public class AppConfig {

    @Bean
    public MessageSource messageSource() {
        ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource();
        messageSource.setBasename("messages"); // 'messages' ফাইলটি যেখানে আপনার কনটেন্ট সংরক্ষিত থাকবে
        messageSource.setDefaultEncoding("UTF-8");
        return messageSource;
    }
}

এখানে messages হল একটি properties ফাইল (যেমন messages_en.properties, messages_fr.properties) যেখানে প্রতিটি ভাষার জন্য অনুবাদিত স্ট্রিং রাখা হয়।

MessageSource ব্যবহার:

Spring Controller-এ MessageSource ব্যবহার করা হয় বিভিন্ন স্ট্রিং রিসোর্স অ্যাক্সেস করার জন্য।

@Controller
public class WelcomeController {

    @Autowired
    private MessageSource messageSource;

    @RequestMapping("/welcome")
    public String welcome(Model model, Locale locale) {
        String message = messageSource.getMessage("welcome.message", null, locale);
        model.addAttribute("message", message);
        return "welcome";
    }
}

এখানে getMessage() পদ্ধতিটি নির্দিষ্ট locale অনুযায়ী বার্তা রিটার্ন করে। যেমন, যদি locale ইংরেজি (en_US) থাকে, তবে messages_en.properties ফাইল থেকে বার্তা নেওয়া হবে।

properties ফাইলের উদাহরণ:

  • messages_en.properties

    welcome.message=Welcome to our site!
    
  • messages_fr.properties

    welcome.message=Bienvenue sur notre site!
    

২. LocaleResolver Interface:

Spring Framework-এ LocaleResolver হল একটি ইন্টারফেস যা locale সম্পর্কিত তথ্য সংগ্রহ এবং সেট করার জন্য ব্যবহৃত হয়। এটি স্থানিক কনফিগারেশন এবং ব্যবহারকারীর নির্বাচিত ভাষা ধারণ করার জন্য ব্যবহৃত হয়।

LocaleResolver কনফিগারেশন:

Spring Framework-এ locale সমাধান করার জন্য প্রধানত দুটি ধরনের LocaleResolver ব্যবহৃত হয়:

  1. SessionLocaleResolver - এটি ব্যবহারকারীর সেশনে Locale ধারণ করে রাখে।
  2. CookieLocaleResolver - এটি কুকিতে Locale সংরক্ষণ করে।

SessionLocaleResolver উদাহরণ:

@Configuration
public class AppConfig {

    @Bean
    public LocaleResolver localeResolver() {
        return new SessionLocaleResolver();
    }

    @Bean
    public LocaleChangeInterceptor localeChangeInterceptor() {
        LocaleChangeInterceptor interceptor = new LocaleChangeInterceptor();
        interceptor.setParamName("lang");  // 'lang' প্যারামিটার দ্বারা Locale পরিবর্তন করা হবে
        return interceptor;
    }

    @Bean
    public HandlerMapping handlerMapping() {
        RegistryBeanNameHandlerMapping mapping = new RegistryBeanNameHandlerMapping();
        mapping.addInterceptor(localeChangeInterceptor());
        return mapping;
    }
}

এখানে, SessionLocaleResolver ব্যবহার করা হয়েছে, যা ব্যবহারকারীর সেশন অনুযায়ী locale নির্ধারণ করে।

Locale পরিবর্তন:

Spring Framework আপনাকে locale পরিবর্তন করার জন্য একটি প্যারামিটার সেট করতে দেয়, যেমন lang প্যারামিটার ব্যবহার করে, যা URL-এ পাঠানো হয়।

URL উদাহরণ:

http://localhost:8080/welcome?lang=fr

এখানে lang=fr ব্যবহার করা হলে, সিস্টেম ফরাসি ভাষার কনটেন্ট দেখাবে।

৩. Spring MVC Controller তে LocaleResolver এবং MessageSource ব্যবহার:

@Controller
public class MyController {

    @Autowired
    private MessageSource messageSource;

    @Autowired
    private LocaleResolver localeResolver;

    @RequestMapping("/changeLocale")
    public String changeLocale(HttpServletRequest request, @RequestParam("lang") String lang) {
        // locale পরিবর্তন করা
        Locale locale = new Locale(lang);
        localeResolver.setLocale(request, null, locale);
        return "redirect:/welcome";
    }

    @RequestMapping("/welcome")
    public String welcomePage(Model model, Locale locale) {
        String message = messageSource.getMessage("welcome.message", null, locale);
        model.addAttribute("message", message);
        return "welcome";
    }
}

এখানে changeLocale() পদ্ধতিটি ইউজারের locale পরিবর্তন করতে ব্যবহার হয় এবং welcomePage() পদ্ধতিটি locale অনুযায়ী সঠিক বার্তা রিটার্ন করে।

৪. LocaleResolver পরিবর্তন:

Spring Framework আপনাকে localeResolver ব্যবহার করে Locale পরিবর্তন করার জন্য বিভিন্ন বিকল্প প্রদান করে:

  • SessionLocaleResolver: সেশনে locale সেট করে রাখে, যাতে একাধিক রিকোয়েস্টে একই Locale ব্যবহৃত হয়।
  • CookieLocaleResolver: কুকি ব্যবহার করে locale সেট করে রাখে।

CookieLocaleResolver উদাহরণ:

@Bean
public LocaleResolver localeResolver() {
    return new CookieLocaleResolver();
}

Spring Framework-এ MessageSource এবং LocaleResolver ব্যবহার করে খুব সহজে এবং কার্যকরভাবে i18n সমর্থন করা যায়। MessageSource ব্যবহার করে আপনি একাধিক ভাষায় কনটেন্ট প্রদান করতে পারেন এবং LocaleResolver ব্যবহার করে ব্যবহারকারীর locale সেট করতে পারেন, যা পুরো অ্যাপ্লিকেশনটিতে স্থানিক তথ্য সঠিকভাবে পরিচালনা করতে সহায়তা করে। Spring-এর এই কনফিগারেশন এবং টুলস আপনাকে একটি বিশ্বব্যাপী প্রেক্ষাপটে অ্যাপ্লিকেশন তৈরি করতে সাহায্য করে।

Content added By
Promotion

Are you sure to start over?

Loading...