Spring MVC তে MessageSource কনফিগার করা

Spring MVC এর জন্য Internationalization (I18N) - স্প্রিং এমভিসি (Spring MVC) - Java Technologies

273

MessageSource হল Spring Framework এর একটি গুরুত্বপূর্ণ কম্পোনেন্ট যা বিভিন্ন ভাষায় বার্তা (messages) পাঠানোর জন্য ব্যবহৃত হয়। এটি সাধারণত internationalization (i18n) এবং localization (l10n) এর জন্য ব্যবহৃত হয়, অর্থাৎ বিভিন্ন ভাষার ব্যবহারকারীদের জন্য অ্যাপ্লিকেশন থেকে বার্তা প্রদানের জন্য।

Spring MVC তে MessageSource কনফিগারেশন করা হলে, আপনি সহজে বিভিন্ন ভাষায় ইউজার ইন্টারফেসের বার্তা, ত্রুটি বার্তা, এবং অন্যান্য স্ট্যাটিক টেক্সট সেট করতে পারেন।


MessageSource কনফিগার করার প্রক্রিয়া:

Spring MVC তে MessageSource কনফিগার করার জন্য আপনাকে কিছু নির্দিষ্ট ধাপ অনুসরণ করতে হবে:

  1. MessageSource Bean তৈরি করুন:
    • Spring Context তে MessageSource Bean কনফিগার করতে হয় যাতে Spring এটি ব্যবহার করতে পারে।
  2. properties ফাইল তৈরি করুন:
    • messages.properties বা অন্যান্য ভাষার জন্য পৃথক ফাইল যেমন messages_en.properties, messages_fr.properties ইত্যাদি তৈরি করতে হবে, যেখানে বিভিন্ন বার্তা এবং ভাষার অনুবাদ সংরক্ষিত থাকবে।
  3. MessageSource কনফিগারেশন:
    • আপনার Spring Context কনফিগারেশনে MessageSource Bean কনফিগার করুন।
  4. MessageSource থেকে বার্তা রিট্রিভ করা:
    • Spring MVC কন্ট্রোলারে MessageSource ব্যবহার করে বার্তা রিট্রিভ করতে হবে।

MessageSource কনফিগারেশন উদাহরণ:

1. Spring Configuration (Java-based):

Spring MVC এ MessageSource কনফিগার করার জন্য, প্রথমে Java Configuration ব্যবহার করতে হবে।

@Configuration
@EnableWebMvc
@ComponentScan(basePackages = "com.example.controller")
public class WebConfig implements WebMvcConfigurer {

    @Bean
    public MessageSource messageSource() {
        ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource();
        messageSource.setBasename("messages");  // properties ফাইলের নাম (messages.properties)
        messageSource.setDefaultEncoding("UTF-8");  // এনকোডিং সেট করুন
        return messageSource;
    }
}
  • setBasename("messages"): এটি নির্দেশ করে যে messages.properties ফাইলটি ব্যবহৃত হবে। আপনি যদি বিভিন্ন ভাষার জন্য আলাদা ফাইল ব্যবহার করতে চান, যেমন ইংরেজি এবং ফরাসি, তাহলে messages_en.properties এবং messages_fr.properties তৈরি করতে হবে।

2. messages.properties ফাইল তৈরি করুন:

এখন, আপনাকে messages.properties ফাইল তৈরি করতে হবে যা ডিফল্ট বার্তাগুলি ধারণ করবে। এই ফাইলটি সাধারণত src/main/resources ফোল্ডারে রাখা হয়।

messages.properties (ডিফল্ট ইংরেজি বার্তা):

greeting=Hello, welcome to Spring MVC!
login.error=Invalid username or password.
logout.success=You have been logged out successfully.

messages_fr.properties (ফরাসি অনুবাদ):

greeting=Bonjour, bienvenue dans Spring MVC!
login.error=Nom d'utilisateur ou mot de passe invalide.
logout.success=Vous avez été déconnecté avec succès.
  • messages.properties: এটি ডিফল্ট বার্তা ফাইল (ইংরেজি ভাষা)।
  • messages_fr.properties: এটি ফরাসি ভাষার বার্তা ফাইল।

3. Controller তে MessageSource ব্যবহার:

Spring MVC কন্ট্রোলারে MessageSource Bean ব্যবহার করে বার্তা রিটার্ন করার জন্য:

@Controller
public class HomeController {

    @Autowired
    private MessageSource messageSource;

    @GetMapping("/home")
    public String home(Model model, Locale locale) {
        String greeting = messageSource.getMessage("greeting", null, locale);
        model.addAttribute("greeting", greeting);
        return "home";
    }
}

ব্যাখ্যা:

  • @Autowired: Spring MessageSource Bean ইনজেক্ট করছে।
  • messageSource.getMessage("greeting", null, locale): এখানে greeting বার্তা কোডটি messages.properties ফাইল থেকে লোড হচ্ছে। locale প্যারামিটারটি ব্যবহারকারীর ভাষার ভিত্তিতে সঠিক বার্তা ফিরিয়ে দেয়। যদি ব্যবহারকারী ফরাসি ভাষা ব্যবহার করেন, তাহলে ফরাসি বার্তা রিটার্ন হবে।

4. View (JSP) Example:

home.jsp (ভিউ):

<html>
<head>
    <title>Spring MVC Example</title>
</head>
<body>
    <h1>${greeting}</h1>
</body>
</html>

এখানে, ${greeting} এলিমেন্টটি MessageSource থেকে প্রাপ্ত বার্তা দ্বারা প্রতিস্থাপিত হবে, যা messages.properties ফাইল থেকে রিট্রিভ করা হয়েছে।

5. LocaleResolver Configuration:

যেহেতু Spring MVC তে MessageSource ব্যবহার করতে হলে আপনাকে Locale নির্ধারণ করতে হবে, তাই আপনি একটি LocaleResolver কনফিগার করতে পারেন।

@Bean
public LocaleResolver localeResolver() {
    SessionLocaleResolver resolver = new SessionLocaleResolver();
    resolver.setDefaultLocale(Locale.ENGLISH);  // ডিফল্ট ভাষা ইংরেজি
    return resolver;
}

@Bean
public LocaleChangeInterceptor localeChangeInterceptor() {
    LocaleChangeInterceptor interceptor = new LocaleChangeInterceptor();
    interceptor.setParamName("lang");  // URL প্যারামিটার থেকে ভাষা চয়ন করা যাবে
    return interceptor;
}

@Override
public void addInterceptors(InterceptorRegistry registry) {
    registry.addInterceptor(localeChangeInterceptor());
}
  • SessionLocaleResolver: এটি ব্যবহারকারীর সেশন অনুযায়ী ভাষা নির্ধারণ করে।
  • LocaleChangeInterceptor: এটি URL প্যারামিটার (lang) এর মাধ্যমে ভাষা পরিবর্তনের অনুমতি দেয়।

6. Language Change URL Example:

ব্যবহারকারী যদি URL এর মাধ্যমে ভাষা পরিবর্তন করতে চান, তাহলে একটি URL প্যারামিটার ব্যবহার করতে হবে:

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

এটি ফরাসি ভাষার বার্তা দেখাবে।


MessageSource এর সুবিধা:

  1. Internationalization (i18n):
    • Spring MVC এর মাধ্যমে MessageSource ব্যবহার করে আপনি সহজেই আপনার অ্যাপ্লিকেশনকে আন্তর্জাতিকভাবে (i18n) কনফিগার করতে পারেন এবং বিভিন্ন ভাষায় বার্তা প্রদান করতে পারেন।
  2. Separation of Concerns:
    • বার্তা এবং ইউজার ইন্টারফেসের অন্যান্য অংশ আলাদা রাখা যায়। এর ফলে কোড রক্ষণাবেক্ষণ করা সহজ হয়।
  3. Locale-Specific Messages:
    • ব্যবহারকারীর লোকেশন এবং ভাষার উপর ভিত্তি করে সঠিক বার্তা প্রদান করা যায়।
  4. Dynamic Language Switching:
    • LocaleChangeInterceptor এর মাধ্যমে অ্যাপ্লিকেশন রিলোড ছাড়া ভাষা পরিবর্তন করা যেতে পারে।

Conclusion:

Spring MVC তে MessageSource কনফিগার করে আপনি অ্যাপ্লিকেশনটির আন্তর্জাতিকীকরণ এবং স্থানীয়করণ পরিচালনা করতে পারেন। এটি ব্যবহারকারীর ভাষা অনুযায়ী বার্তা প্রদানের জন্য খুবই কার্যকর। Spring MVC এবং Spring Security এর সাথে ইন্টিগ্রেট করা হলে এটি multi-language সাপোর্ট এবং নিরাপত্তা ব্যবস্থা উভয়কেই শক্তিশালী করে।

Content added By
Promotion

Are you sure to start over?

Loading...