LocaleResolver এর মাধ্যমে ডায়নামিক ভাষা পরিবর্তন

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

297

Spring MVC-তে LocaleResolver ব্যবহার করে আপনি ইউজারের রিকোয়েস্টের ভিত্তিতে ডায়নামিকভাবে ভাষা পরিবর্তন করতে পারেন। এটি আন্তর্জাতিকীকরণ (i18n) এবং স্থানীয়করণ (l10n) সমর্থন প্রদান করে, যেখানে অ্যাপ্লিকেশনটি ব্যবহারকারীর পছন্দ অনুযায়ী ভাষা এবং স্থানীয় সেটিংসে রেসপন্স প্রদান করে।

LocaleResolver কী?

Spring MVC তে LocaleResolver একটি ইন্টারফেস যা ইউজারের ভাষা (locale) নির্বাচন করে এবং সেই অনুযায়ী অ্যাপ্লিকেশনকে আন্তর্জাতিক ভাষার রিসোর্স ফাইল (যেমন, messages.properties) লোড করতে সহায়তা করে। এটি ইউজারের রিকোয়েস্ট বা ব্রাউজারের locale প্যারামিটার অনুযায়ী ভাষা পরিবর্তন করতে সাহায্য করে।

LocaleResolver এর কাজের প্রক্রিয়া:

  1. LocaleResolver ইউজারের প্রেফারড ভাষা (locale) নির্ধারণ করে।
  2. ইউজারের ভাষা অনুযায়ী সঠিক রিসোর্স (যেমন, messages.properties) নির্বাচন করা হয়।
  3. 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:

  1. URL for English:
    • http://localhost:8080/greet?lang=en
  2. URL for French:
    • http://localhost:8080/greet?lang=fr

এখন, রিকোয়েস্টের প্যারামিটার অনুযায়ী ভাষা পরিবর্তিত হবে এবং ব্যবহারকারীকে সঠিক ভাষায় সাড়া দেওয়া হবে।


Conclusion

Spring MVC তে LocaleResolver এবং LocaleChangeInterceptor ব্যবহার করে আপনি সহজে ডায়নামিক ভাষা পরিবর্তন করতে পারেন। এই কনফিগারেশন ব্যবহারকারীর রিকোয়েস্ট অনুযায়ী ভাষা পরিবর্তন করার সুযোগ দেয়। আন্তর্জাতিকীকরণ (i18n) এবং স্থানীয়করণ (l10n) এর মাধ্যমে, আপনি বিশ্বের বিভিন্ন অঞ্চলের ব্যবহারকারীদের জন্য ভাষা এবং স্থানীয় কনটেন্ট প্রদানের ব্যবস্থা করতে পারবেন। Spring MVC তে এই ফিচারটি ব্যবহারের মাধ্যমে একটি বহুভাষী ওয়েব অ্যাপ্লিকেশন তৈরি করা সম্ভব।

Content added By
Promotion

Are you sure to start over?

Loading...