FFFF
Skip to content

Latest commit

 

History

42 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

RequestURI Locale Interceptor for Spring

Quality Gate Status Maven Central

Handling Locale as first part of RequestURI.

Example:

HTTP Request                                 RequestURI

https://foo.bar/{locale}/some/path.html  ->  /{locale}/some/path.html
https://foo.bar/{locale}/a.html          ->  /{locale}/a.html
https://foo.bar/{locale}/xyz?a=b         ->  /{locale}/xyz

Dependency

Maven

<dependency>
    <groupId>io.github.alaugks</groupId>
    <artifactId>spring-requesturi-locale-interceptor</artifactId>
    <version>0.3.1</version>
</dependency>

Gradle

implementation group: 'io.github.alaugks', name: 'spring-requesturi-locale-interceptor', version: '0.3.1'

Configuration

builder(Locale defaultLocale) (required)

  • Argument Locale defaultLocale: Defines the default and fallback locale.

supportedLocales(List<Locale> locales)

  • Lists all locales that are supported.

defaultRequestURI(String path)

  • Defines the path to redirect to if the RequestURI is empty. If not set, the default RequestURI is /{defaultLocale}.

Spring Configuration

import io.github.alaugks.spring.requesturilocaleinterceptor.RequestURILocaleInterceptor;
import io.github.alaugks.spring.requesturilocaleinterceptor.RequestURILocaleResolver;
import java.util.List;
import java.util.Locale;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.LocaleResolver;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

@Configuration
public class WebMvcConfigurerConfig implements WebMvcConfigurer {

    private final Locale defaultLocale = Locale.forLanguageTag("en");

    private final List<Locale> supportedLocales = List.of(
        Locale.forLanguageTag("en"),
        Locale.forLanguageTag("de"),
        Locale.forLanguageTag("en-US")
    );

    @Bean
    public LocaleResolver localeResolver() {
        RequestURILocaleResolver resolver = new RequestURILocaleResolver();
        resolver.setDefaultLocale(this.defaultLocale);
        return resolver;
    }

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        RequestURILocaleInterceptor interceptor = RequestURILocaleInterceptor
            .builder(this.defaultLocale)
            .supportedLocales(this.supportedLocales)
            .defaultRequestURI("/en/home")
            .build();
        
        registry.addInterceptor(urlInterceptor)
            .addPathPatterns("/**")
            // Exclude from Interceptor
            .excludePathPatterns("/static/**", "/error");
    }
}

Example

A complete, runnable Spring Boot application is available in the spring-messagesource-xliff-example repository. It shows this interceptor in action, resolving the locale from the first path segment of the request URI (e.g. /en/..., /de/...).

About

Handling Locale as first part of RequestURI in Spring MVC

Topics

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

0