Index: lams_common/src/java/org/lamsfoundation/lams/util/LanguageUtil.java =================================================================== diff -u -r3b255feabeeae3729398d969d6ee4d76947777d3 -r9b523cbbd9f3c3c2db18a2d001e08edfd2f53620 --- lams_common/src/java/org/lamsfoundation/lams/util/LanguageUtil.java (.../LanguageUtil.java) (revision 3b255feabeeae3729398d969d6ee4d76947777d3) +++ lams_common/src/java/org/lamsfoundation/lams/util/LanguageUtil.java (.../LanguageUtil.java) (revision 9b523cbbd9f3c3c2db18a2d001e08edfd2f53620) @@ -23,12 +23,14 @@ package org.lamsfoundation.lams.util; +import java.text.MessageFormat; import java.util.Arrays; import java.util.Collections; import java.util.Comparator; import java.util.HashMap; import java.util.LinkedHashMap; import java.util.List; +import java.util.Locale; import java.util.Map; import java.util.TimeZone; import java.util.stream.Collectors; @@ -170,8 +172,17 @@ } return LanguageUtil.getDefaultLocale(); } - + /** + * Wrapper method for getSupportedLocaleByNameOrLanguageCode(String input). + */ + public static Locale getSupportedLocaleByNameOrLanguageCode(Locale locale) { + String localeId = MessageFormat.format("{0}_{1}", locale.getLanguage(), locale.getCountry()); + SupportedLocale supportedLocale = LanguageUtil.getSupportedLocaleByNameOrLanguageCode(localeId); + return new Locale(supportedLocale.getLanguageIsoCode(), supportedLocale.getCountryIsoCode()); + } + + /** * Searches for a supported locale based on the provided input, first assuming it has "xx_XX" format, then that the * first two letters is a language ISO code. Otherwise returns server default locale. */ Index: lams_common/src/java/org/lamsfoundation/lams/web/filter/LocaleFilter.java =================================================================== diff -u -r51fb2a37254f24bb2a805d4ffd54482c779f43fa -r9b523cbbd9f3c3c2db18a2d001e08edfd2f53620 --- lams_common/src/java/org/lamsfoundation/lams/web/filter/LocaleFilter.java (.../LocaleFilter.java) (revision 51fb2a37254f24bb2a805d4ffd54482c779f43fa) +++ lams_common/src/java/org/lamsfoundation/lams/web/filter/LocaleFilter.java (.../LocaleFilter.java) (revision 9b523cbbd9f3c3c2db18a2d001e08edfd2f53620) @@ -67,7 +67,7 @@ String direction = null; TimeZone tz = null; - // get locale from user settings + // 1. get locale from user settings HttpSession session = SessionManager.getSession(); if (session != null) { UserDTO user = (UserDTO) session.getAttribute(AttributeNames.USER); @@ -83,13 +83,14 @@ } } } - - // get default locale from configuration + // 2. get default locale from client's browser. + // 3. get server's default locale + // 4. fall back to "en_AU" if (preferredLocale == null) { - String defaults[] = LanguageUtil.getDefaultLangCountry(); - preferredLocale = new Locale(defaults[0] == null ? "" : defaults[0], - defaults[1] == null ? "" : defaults[1]); + Locale browserLocale = request.getLocale(); + preferredLocale = LanguageUtil.getSupportedLocaleByNameOrLanguageCode(browserLocale); } + if (direction == null) { direction = LanguageUtil.getDefaultDirection(); }