Skip to content

alaugks/spring-requesturi-locale-interceptor

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

38 Commits
 
 
 
 
 
 
 
 
 
 
 
 

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

An example in action can be seen here.

Dependency

Maven

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

Gradle

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

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");
    }
}

About

Handling Locale as first part of RequestURI in Spring MVC

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages