Skip to content
Snippets Groups Projects

feat: Map from unsupported locale 'no' or 'nn', to 'nb'

Merged Lene Wasskog requested to merge fix/ensure-supported-locale into develop
1 file
+ 24
6
Compare changes
  • Side-by-side
  • Inline
@@ -20,9 +20,10 @@ package no.nibio.vips.logic.i18n;
@@ -20,9 +20,10 @@ package no.nibio.vips.logic.i18n;
import com.ibm.icu.util.ULocale;
import com.ibm.icu.util.ULocale;
import java.io.IOException;
import java.io.IOException;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.List;
import static java.util.stream.Collectors.toList;
import java.util.Map;
 
import javax.servlet.Filter;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.FilterConfig;
@@ -31,7 +32,6 @@ import javax.servlet.ServletRequest;
@@ -31,7 +32,6 @@ import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletRequest;
import no.nibio.vips.i18n.LanguageUtil;
import no.nibio.vips.i18n.LanguageUtil;
import no.nibio.vips.logic.util.SystemTime;
/**
/**
* This filter checks if there are any changes in locale requests, and
* This filter checks if there are any changes in locale requests, and
@@ -43,6 +43,12 @@ import no.nibio.vips.logic.util.SystemTime;
@@ -43,6 +43,12 @@ import no.nibio.vips.logic.util.SystemTime;
public class LocalizationFilter implements Filter{
public class LocalizationFilter implements Filter{
private List<ULocale> availableLocales;
private List<ULocale> availableLocales;
 
private static final Map<String, String> LOCALE_MAPPING = new HashMap<>();
 
static {
 
LOCALE_MAPPING.put("no", "nb");
 
LOCALE_MAPPING.put("nn", "nb");
 
}
 
@Override
@Override
public void init(FilterConfig filterConfig) throws ServletException {
public void init(FilterConfig filterConfig) throws ServletException {
@@ -63,8 +69,8 @@ public class LocalizationFilter implements Filter{
@@ -63,8 +69,8 @@ public class LocalizationFilter implements Filter{
}*/
}*/
ULocale currentLocale = SessionLocaleUtil.getCurrentLocale((HttpServletRequest)request);
ULocale currentLocale = SessionLocaleUtil.getCurrentLocale((HttpServletRequest)request);
ULocale browserRequestedLocale = ULocale.forLocale(((HttpServletRequest)request).getLocale());
ULocale browserRequestedLocale = getBrowserRequestedLocale(request);
String userRequestedLocaleStr = ((HttpServletRequest)request).getParameter("userRequestedLocale");
String userRequestedLocaleStr = request.getParameter("userRequestedLocale");
ULocale userRequestedLocale = userRequestedLocaleStr != null ? new ULocale(userRequestedLocaleStr) : null;
ULocale userRequestedLocale = userRequestedLocaleStr != null ? new ULocale(userRequestedLocaleStr) : null;
/*
/*
@@ -110,7 +116,19 @@ public class LocalizationFilter implements Filter{
@@ -110,7 +116,19 @@ public class LocalizationFilter implements Filter{
chain.doFilter(request, response);
chain.doFilter(request, response);
}
}
 
/**
 
* Get locale from request. Map from unsupported 'no' and 'nn', to 'nb'.
 
*
 
* @param request The request from which to get the locale
 
* @return A locale which is supported by the system
 
*/
 
private static ULocale getBrowserRequestedLocale(ServletRequest request) {
 
ULocale locale = ULocale.forLocale(request.getLocale());
 
String language = locale.getLanguage();
 
String mappedLanguage = LOCALE_MAPPING.getOrDefault(language, language);
 
return new ULocale(mappedLanguage);
 
}
@Override
@Override
public void destroy() {
public void destroy() {
Loading