Spring MVC-তে LocaleResolver ব্যবহার করে আপনি ইউজারের রিকোয়েস্টের ভিত্তিতে ডায়নামিকভাবে ভাষা পরিবর্তন করতে পারেন। এটি আন্তর্জাতিকীকরণ (i18n) এবং স্থানীয়করণ (l10n) সমর্থন প্রদান করে, যেখানে অ্যাপ্লিকেশনটি ব্যবহারকারীর পছন্দ অনুযায়ী ভাষা এবং স্থানীয় সেটিংসে রেসপন্স প্রদান করে।
LocaleResolver কী?
Spring MVC তে LocaleResolver একটি ইন্টারফেস যা ইউজারের ভাষা (locale) নির্বাচন করে এবং সেই অনুযায়ী অ্যাপ্লিকেশনকে আন্তর্জাতিক ভাষার রিসোর্স ফাইল (যেমন, messages.properties) লোড করতে সহায়তা করে। এটি ইউজারের রিকোয়েস্ট বা ব্রাউজারের locale প্যারামিটার অনুযায়ী ভাষা পরিবর্তন করতে সাহায্য করে।
LocaleResolver এর কাজের প্রক্রিয়া:
- LocaleResolver ইউজারের প্রেফারড ভাষা (locale) নির্ধারণ করে।
- ইউজারের ভাষা অনুযায়ী সঠিক রিসোর্স (যেমন,
messages.properties) নির্বাচন করা হয়। - Spring MVC আন্তর্জাতিক ভাষার রিসোর্সে থাকা কীগুলিকে সঠিক ভাষায় রেন্ডার করে।
LocaleResolver কনফিগারেশন উদাহরণ
Step 1: LocaleResolver Configuration
Spring MVC-তে LocaleResolver কনফিগার করতে SessionLocaleResolver অথবা CookieLocaleResolver ব্যবহার করা হয়। এখানে SessionLocaleResolver উদাহরণ হিসেবে দেখানো হয়েছে।
WebConfig.java (LocaleResolver কনফিগারেশন)
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import org.springframework.web.servlet.i18n.SessionLocaleResolver;
import java.util.Locale;
@Configuration
@EnableWebMvc
public class WebConfig implements WebMvcConfigurer {
@Bean
public SessionLocaleResolver localeResolver() {
SessionLocaleResolver localeResolver = new SessionLocaleResolver();
localeResolver.setDefaultLocale(Locale.US); // Default Locale
return localeResolver;
}
}
- SessionLocaleResolver: এটি ইউজারের ভাষা সেশনেই সংরক্ষণ করে রাখে। অ্যাপ্লিকেশন পুনরায় রিফ্রেশ হলে ইউজারের নির্বাচিত ভাষা টিকে থাকে।
- setDefaultLocale(Locale.US): ডিফল্ট ভাষা যুক্ত করা হয়েছে, এখানে এটি US English (Locale.US)। আপনি চাইলে Locale.FRANCE বা Locale.GERMANY দিয়েও সেট করতে পারেন।
Step 2: LocaleChangeInterceptor Configuration
এখন LocaleChangeInterceptor কনফিগার করা প্রয়োজন। এটি ইউজারের রিকোয়েস্টে ভাষা পরিবর্তন করার জন্য সাহায্য করে। এটি রিকোয়েস্ট প্যারামিটার (যেমন lang=en বা lang=fr) চেক করে এবং LocaleResolver-কে সংশ্লিষ্ট ভাষা সেট করতে বলে।
WebConfig.java (LocaleChangeInterceptor কনফিগারেশন)
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import org.springframework.web.servlet.i18n.LocaleChangeInterceptor;
@Configuration
public class WebConfig implements WebMvcConfigurer {
@Override
public void addInterceptors(InterceptorRegistry registry) {
LocaleChangeInterceptor interceptor = new LocaleChangeInterceptor();
interceptor.setParamName("lang"); // The request parameter used to change the language
registry.addInterceptor(interceptor);
}
}
- setParamName("lang"):
langপ্যারামিটারটি ব্যবহার করা হবে ভাষা পরিবর্তনের জন্য। উদাহরণস্বরূপ,?lang=enবা?lang=frরিকোয়েস্টে এই প্যারামিটার থাকবে।
Step 3: Messages Properties Files
অন্য ভাষার জন্য রিসোর্স ফাইল তৈরি করতে হবে। এখানে দুটি ফাইলের উদাহরণ দেওয়া হলো: একটিতে ইংরেজি (messages.properties) এবং আরেকটিতে ফরাসি (messages_fr.properties) ভাষার কনটেন্ট থাকবে।
messages.properties (English)
greeting=Hello, Welcome to Spring MVC!
messages_fr.properties (French)
greeting=Bonjour, bienvenue dans Spring MVC!
- এই ফাইলগুলো
src/main/resourcesডিরেক্টরির মধ্যে থাকতে হবে। Spring Framework এই ফাইলগুলোকে নির্বাচিত Locale অনুযায়ী লোড করে।
Step 4: Controller Example
কন্ট্রোলার ক্লাসে আমরা এখন messages.properties বা messages_fr.properties ফাইল থেকে ডেটা রিটার্ন করতে পারি, যেটি ইউজারের সেশন বা রিকোয়েস্ট প্যারামিটার অনুযায়ী পরিবর্তিত হবে।
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.MessageSource;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
@Controller
public class HomeController {
@Autowired
private MessageSource messageSource;
@GetMapping("/greet")
public String greet(Model model) {
String greetingMessage = messageSource.getMessage("greeting", null, null);
model.addAttribute("message", greetingMessage);
return "greet"; // Return the view name (greet.jsp or greet.html)
}
}
- messageSource.getMessage("greeting", null, null): এই মেথডটি
greetingকী ব্যবহার করে সঠিক ভাষার রিসোর্স ফাইল থেকে ডেটা রিটার্ন করে। - model.addAttribute("message", greetingMessage): এখানে
greetingMessageভিউতে পাঠানো হচ্ছে।
Step 5: View Example
এখন greet.jsp বা greet.html ভিউ তৈরি করতে হবে, যেখানে কন্ট্রোলার থেকে পাঠানো ডেটা রেন্ডার হবে।
greet.jsp (JSP View)
<!-- /WEB-INF/views/greet.jsp -->
<html>
<body>
<h1>${message}</h1> <!-- The greeting message -->
</body>
</html>
Step 6: Language Change via URL
যখন আপনি ইউজারের ভাষা পরিবর্তন করতে চান, তখন আপনি URL-এ lang প্যারামিটার পাঠাতে পারেন।
Example:
- URL for English:
http://localhost:8080/greet?lang=en
- URL for French:
http://localhost:8080/greet?lang=fr
এখন, রিকোয়েস্টের প্যারামিটার অনুযায়ী ভাষা পরিবর্তিত হবে এবং ব্যবহারকারীকে সঠিক ভাষায় সাড়া দেওয়া হবে।
Conclusion
Spring MVC তে LocaleResolver এবং LocaleChangeInterceptor ব্যবহার করে আপনি সহজে ডায়নামিক ভাষা পরিবর্তন করতে পারেন। এই কনফিগারেশন ব্যবহারকারীর রিকোয়েস্ট অনুযায়ী ভাষা পরিবর্তন করার সুযোগ দেয়। আন্তর্জাতিকীকরণ (i18n) এবং স্থানীয়করণ (l10n) এর মাধ্যমে, আপনি বিশ্বের বিভিন্ন অঞ্চলের ব্যবহারকারীদের জন্য ভাষা এবং স্থানীয় কনটেন্ট প্রদানের ব্যবস্থা করতে পারবেন। Spring MVC তে এই ফিচারটি ব্যবহারের মাধ্যমে একটি বহুভাষী ওয়েব অ্যাপ্লিকেশন তৈরি করা সম্ভব।
Read more