How does Spring Boot support internationalization (i18n)?

Spring Boot supports Internationalization (i18n) by allowing applications to display messages in multiple languages based on the user's locale or language preference. It uses locale-specific resource files and automatically resolves the appropriate language at runtime.

Key Points: • Messages are stored in separate language-specific property files. • Spring Boot selects the appropriate language using Locale information. • LocaleResolver and MessageSource are the core components used for i18n support.

Example: Consider an e-commerce application used by customers in different countries.

English User: Welcome to our application

French User: Bienvenue dans notre application

German User: Willkommen in unserer Anwendung

The application displays messages according to the user's selected language without changing the application code.

Code Example:

messages.properties

welcome.message=Welcome to our application

messages_fr.properties

welcome.message=Bienvenue dans notre application

messages_de.properties

welcome.message=Willkommen in unserer Anwendung

Accessing Messages:

@Autowired
private MessageSource messageSource;

String message = messageSource.getMessage(

        "welcome.message",
        null,
        Locale.FRANCE);

Core Components:

1. MessageSource

• Loads messages from property files. • Resolves messages based on locale.

2. LocaleResolver

• Determines the user's locale. • Common implementations: • AcceptHeaderLocaleResolver • SessionLocaleResolver • CookieLocaleResolver

3. LocaleChangeInterceptor

• Allows users to switch language dynamically using request parameters.

Example:

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

This changes the application language to French.

Configuration Example:

@Bean
public LocaleResolver localeResolver() {

    SessionLocaleResolver resolver =
            new SessionLocaleResolver();

    resolver.setDefaultLocale(
            Locale.ENGLISH);

    return resolver;
}

Supported Message Files:

• messages.properties • messages_en.properties • messages_fr.properties • messages_de.properties • messages_hi.properties

Spring Boot automatically loads the correct file based on the user's locale.

Real-World Example:

An airline booking application supports:

• English • French • German • Hindi • Japanese

Users see:

• Error messages • Labels • Validation messages • Notifications

in their preferred language.

Benefits:

• Better user experience. • Supports global audiences. • Easy maintenance of translations. • No code changes required for adding new languages.

Interview Tip: A concise interview answer is: Spring Boot supports internationalization using locale-specific message property files, MessageSource for loading messages, and LocaleResolver for determining the user's language preference. Based on the user's locale, Spring Boot automatically displays messages in the appropriate language, making applications suitable for global users.