Stirling-PDF/src/main/java/stirling/software/SPDF/config/Beans.java

66 lines
2.4 KiB
Java
Raw Normal View History

2023-07-12 01:17:44 +02:00
package stirling.software.SPDF.config;
import java.util.Locale;
2023-08-26 18:30:49 +02:00
import org.springframework.beans.factory.annotation.Autowired;
2023-07-12 01:17:44 +02:00
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;
import org.springframework.web.servlet.i18n.LocaleChangeInterceptor;
import org.springframework.web.servlet.i18n.SessionLocaleResolver;
2023-08-26 18:30:49 +02:00
import stirling.software.SPDF.model.ApplicationProperties;
2023-08-13 02:12:29 +02:00
2023-07-12 01:17:44 +02:00
@Configuration
public class Beans implements WebMvcConfigurer {
2023-08-13 02:12:29 +02:00
2023-08-26 18:30:49 +02:00
@Autowired
ApplicationProperties applicationProperties;
2023-07-12 01:17:44 +02:00
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(localeChangeInterceptor());
registry.addInterceptor(new CleanUrlInterceptor());
}
@Bean
public LocaleChangeInterceptor localeChangeInterceptor() {
LocaleChangeInterceptor lci = new LocaleChangeInterceptor();
lci.setParamName("lang");
return lci;
}
@Bean
public LocaleResolver localeResolver() {
SessionLocaleResolver slr = new SessionLocaleResolver();
2023-08-26 18:30:49 +02:00
String appLocaleEnv = applicationProperties.getSystem().getDefaultLocale();
2023-07-12 01:17:44 +02:00
Locale defaultLocale = Locale.UK; // Fallback to UK locale if environment variable is not set
if (appLocaleEnv != null && !appLocaleEnv.isEmpty()) {
Locale tempLocale = Locale.forLanguageTag(appLocaleEnv);
String tempLanguageTag = tempLocale.toLanguageTag();
if (appLocaleEnv.equalsIgnoreCase(tempLanguageTag)) {
defaultLocale = tempLocale;
} else {
tempLocale = Locale.forLanguageTag(appLocaleEnv.replace("_","-"));
tempLanguageTag = tempLocale.toLanguageTag();
if (appLocaleEnv.equalsIgnoreCase(tempLanguageTag)) {
defaultLocale = tempLocale;
} else {
System.err.println("Invalid APP_LOCALE environment variable value. Falling back to default Locale.UK.");
}
}
}
slr.setDefaultLocale(defaultLocale);
return slr;
}
}