Internationalization (I18N) কি এবং এর প্রয়োজনীয়তা

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

337

Internationalization (I18N) হল এমন একটি প্রক্রিয়া যা সফটওয়্যার অ্যাপ্লিকেশন বা ওয়েব অ্যাপ্লিকেশনগুলোকে বিভিন্ন ভাষায় বা সাংস্কৃতিক পরিবেশে সঠিকভাবে কাজ করার জন্য প্রস্তুত করে। I18N শব্দটি "Internationalization" শব্দের সংক্ষিপ্ত রূপ, যেখানে "I" এবং "N"-এর মধ্যে ১৮টি অক্ষর রয়েছে।

Spring MVC-তে I18N এর মাধ্যমে অ্যাপ্লিকেশন বিভিন্ন ভাষার জন্য localization সমর্থন করে, যা বিভিন্ন অঞ্চলের ব্যবহারকারীদের জন্য প্রাসঙ্গিক ভাষা ও সংস্কৃতিতে তথ্য প্রদান করে।


Spring MVC তে Internationalization (I18N) এর প্রয়োজনীয়তা

  1. বিভিন্ন ভাষায় অ্যাপ্লিকেশন ব্যবহারের সুবিধা:
    • I18N এর মাধ্যমে আপনি অ্যাপ্লিকেশনটি একাধিক ভাষায় কনফিগার করতে পারেন, যার ফলে বৈশ্বিক ব্যবহারকারীদের জন্য এটি ব্যবহার উপযোগী হয়।
    • উদাহরণস্বরূপ, একটি অ্যাপ্লিকেশন ইংরেজি, ফরাসি, স্প্যানিশ, বা চীনা ভাষায় চালানো যেতে পারে।
  2. স্থানীয় সংস্কৃতি ও এলাকার অনুকূল:
    • অ্যাপ্লিকেশনগুলি বিভিন্ন দেশের সাংস্কৃতিক বৈশিষ্ট্য যেমন তারিখের ফরম্যাট, মুদ্রার প্রতীক, সংখ্যার ফরম্যাট ইত্যাদি অনুযায়ী কনফিগার করা যায়।
    • উদাহরণ: আমেরিকাতে তারিখ ফরম্যাট হয় MM/dd/yyyy, কিন্তু ইউরোপে সাধারণত dd/MM/yyyy ব্যবহৃত হয়।
  3. ব্যবহারকারীর অভিজ্ঞতা উন্নত করা:
    • বিভিন্ন ভাষায় অ্যাপ্লিকেশনটি উপস্থাপন করা ব্যবহারকারীদের আরও ভালো অভিজ্ঞতা প্রদান করে, বিশেষ করে যখন তারা তাদের মাতৃভাষায় অ্যাপ্লিকেশন ব্যবহার করে।
    • একটি ওয়েবসাইট বা অ্যাপ্লিকেশন ব্যবহারকারীর কাছে আরও গ্রহণযোগ্য এবং প্রাসঙ্গিক হয়ে ওঠে।
  4. বৈশ্বিক বাজারে প্রসার:
    • ইন্টারন্যাশনালাইজেশন একটি অ্যাপ্লিকেশন বা ওয়েবসাইটকে আন্তর্জাতিক বাজারে প্রসারিত করতে সহায়তা করে। এটি বিভিন্ন ভাষাভাষী গ্রাহকদের কাছে পৌঁছানোর জন্য একটি গুরুত্বপূর্ণ ফিচার।
  5. নতুন ভাষার সমর্থন সহজ:
    • ইন্টারন্যাশনালাইজেশন (I18N) একবার কনফিগার করা হলে, নতুন ভাষা যোগ করা খুব সহজ হয়ে যায়। নতুন ভাষার জন্য শুধুমাত্র একটি রিসোর্স ফাইল যোগ করতে হবে, যা অতিরিক্ত কোড পরিবর্তনের প্রয়োজন হয় না।

Spring MVC তে Internationalization (I18N) কনফিগারেশন

Spring MVC তে I18N কার্যকরভাবে কাজ করতে, কয়েকটি পদক্ষেপ অনুসরণ করতে হয়। আসুন দেখি কিভাবে Spring MVC তে Internationalization কনফিগার করা যায়।

Step 1: messages.properties ফাইল তৈরি করা

প্রথমত, আপনাকে messages.properties নামের একটি ফাইল তৈরি করতে হবে যেখানে আপনি অ্যাপ্লিকেশনটির সকল টেক্সট বা স্ট্রিং সন্নিবেশ করবেন। এই ফাইলের মধ্যে key-value pair থাকবে, যেখানে key হবে টেক্সট বা স্ট্রিং এবং value হবে টেক্সটের ভাষার অনুবাদ।

  1. messages.properties (ডিফল্ট ফাইল):
welcome.message=Welcome to our website!
  1. messages_fr.properties (ফরাসি ভাষার জন্য):
welcome.message=Bienvenue sur notre site Web!
  1. messages_es.properties (স্প্যানিশ ভাষার জন্য):
welcome.message=¡Bienvenido a nuestro sitio web!

Step 2: Spring Configuration for I18N

Spring MVC তে I18N কনফিগার করার জন্য আপনাকে LocaleResolver এবং MessageSource কনফিগার করতে হবে।

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

WebConfig.java:

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.support.ReloadableResourceBundleMessageSource;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import org.springframework.web.servlet.i18n.LocaleChangeInterceptor;
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.ENGLISH);  // Default locale
        return localeResolver;
    }

    @Bean
    public ReloadableResourceBundleMessageSource messageSource() {
        ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource();
        messageSource.setBasename("classpath:messages");  // File name of message properties
        messageSource.setDefaultEncoding("UTF-8");
        return messageSource;
    }

    @Bean
    public LocaleChangeInterceptor localeChangeInterceptor() {
        LocaleChangeInterceptor interceptor = new LocaleChangeInterceptor();
        interceptor.setParamName("lang");  // URL parameter name to change language
        return interceptor;
    }

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(localeChangeInterceptor());
    }
}

Explanation:

  • SessionLocaleResolver: এটি ব্যবহারকারীর সেশন অনুযায়ী স্থানীয় ভাষা নির্বাচন করে। আপনি setDefaultLocale() মেথড দিয়ে ডিফল্ট ভাষা সেট করতে পারেন।
  • ReloadableResourceBundleMessageSource: এটি messages.properties ফাইল থেকে ভাষাগত স্ট্রিং লোড করে।
  • LocaleChangeInterceptor: এই ইন্টারসেপ্টরটি ব্যবহার করে আপনি URL প্যারামিটার lang দিয়ে ভাষা পরিবর্তন করতে পারবেন।

Step 3: Controller for Testing Internationalization

কন্ট্রোলারে Locale এবং MessageSource ব্যবহার করে ভাষা অনুযায়ী মেসেজ পাঠানো হয়।

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.MessageSource;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ModelAttribute;

import java.util.Locale;

@Controller
public class HomeController {

    @Autowired
    private MessageSource messageSource;

    @GetMapping("/")
    public String home(@RequestParam(value = "lang", required = false) String lang, Locale locale) {
        if (lang != null) {
            locale = new Locale(lang);  // Language change via URL parameter
        }
        String message = messageSource.getMessage("welcome.message", null, locale);
        System.out.println(message);
        return "home";
    }
}

Explanation:

  • @RequestParam("lang"): URL থেকে lang প্যারামিটার গ্রহণ করে ভাষা পরিবর্তন করা হয়।
  • MessageSource.getMessage(): এটি প্রাপ্ত locale অনুযায়ী মেসেজের অনুবাদ প্রদান করে।

Step 4: View (JSP) ফাইল

View ফাইলে আপনি welcome.message এর অনুবাদ দেখতে পাবেন।

home.jsp:

<html>
<body>
    <h1>${welcome.message}</h1>
    <a href="?lang=en">English</a> | 
    <a href="?lang=fr">Français</a> | 
    <a href="?lang=es">Español</a>
</body>
</html>

Explanation:

  • ${welcome.message}: এখানে Spring এর ইন্টারন্যাশনালাইজড স্ট্রিং থেকে welcome.message রিটার্ন করা হচ্ছে।
  • Language Switch Links: ?lang=en, ?lang=fr, এবং ?lang=es দ্বারা ভাষা পরিবর্তন করা হচ্ছে।

Step 5: Testing

  1. Default Language (English): http://localhost:8080/ → "Welcome to our website!"
  2. French Language: http://localhost:8080/?lang=fr → "Bienvenue sur notre site Web!"
  3. Spanish Language: http://localhost:8080/?lang=es → "¡Bienvenido a nuestro sitio web!"

উপসংহার:

Internationalization (I18N) হল একটি প্রক্রিয়া যা আপনাকে আপনার অ্যাপ্লিকেশনকে বৈশ্বিক ব্যবহারের জন্য প্রস্তুত করতে সাহায্য করে। Spring MVC তে I18N কনফিগারেশন করার মাধ্যমে আপনি একাধিক ভাষায় এবং বিভিন্ন সংস্কৃতিতে অ্যাপ্লিকেশনটি উপস্থাপন করতে পারবেন। MessageSource, LocaleResolver, এবং LocaleChangeInterceptor এর মাধ্যমে আপনি ভাষার জন্য টেক্সট অনুবাদ করতে এবং ব্যবহারকারীর ভাষা নির্বাচন করতে সক্ষম হবেন।

Content added By
Promotion

Are you sure to start over?

Loading...