From 75644b338d79615c40c401d097ea3f15c8bd9704 Mon Sep 17 00:00:00 2001 From: lewa <lene.wasskog@nibio.no> Date: Mon, 2 Sep 2024 12:56:46 +0200 Subject: [PATCH] feat: Map from unsupported locale 'no' or 'nn', to 'nb' --- .../vips/logic/i18n/LocalizationFilter.java | 30 +++++++++++++++---- 1 file changed, 24 insertions(+), 6 deletions(-) diff --git a/src/main/java/no/nibio/vips/logic/i18n/LocalizationFilter.java b/src/main/java/no/nibio/vips/logic/i18n/LocalizationFilter.java index b320d3a3..7b09acfc 100755 --- a/src/main/java/no/nibio/vips/logic/i18n/LocalizationFilter.java +++ b/src/main/java/no/nibio/vips/logic/i18n/LocalizationFilter.java @@ -20,9 +20,10 @@ package no.nibio.vips.logic.i18n; import com.ibm.icu.util.ULocale; import java.io.IOException; -import java.util.Arrays; +import java.util.HashMap; import java.util.List; -import static java.util.stream.Collectors.toList; +import java.util.Map; + import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; @@ -31,7 +32,6 @@ import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.http.HttpServletRequest; 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 @@ -43,6 +43,12 @@ import no.nibio.vips.logic.util.SystemTime; public class LocalizationFilter implements Filter{ 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 public void init(FilterConfig filterConfig) throws ServletException { @@ -63,8 +69,8 @@ public class LocalizationFilter implements Filter{ }*/ ULocale currentLocale = SessionLocaleUtil.getCurrentLocale((HttpServletRequest)request); - ULocale browserRequestedLocale = ULocale.forLocale(((HttpServletRequest)request).getLocale()); - String userRequestedLocaleStr = ((HttpServletRequest)request).getParameter("userRequestedLocale"); + ULocale browserRequestedLocale = getBrowserRequestedLocale(request); + String userRequestedLocaleStr = request.getParameter("userRequestedLocale"); ULocale userRequestedLocale = userRequestedLocaleStr != null ? new ULocale(userRequestedLocaleStr) : null; /* @@ -110,7 +116,19 @@ public class LocalizationFilter implements Filter{ 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 public void destroy() { -- GitLab