r2154 - in trunk: wao-persistence/src/main/java/fr/ifremer/wao wao-web/src/main/java/fr/ifremer/wao/web wao-web/src/main/java/fr/ifremer/wao/web/converter wao-web/src/main/webapp/WEB-INF/content wao-web/src/main/webapp/WEB-INF/decorators
Author: bleny Date: 2014-07-16 17:26:24 +0200 (Wed, 16 Jul 2014) New Revision: 2154 Url: http://forge.codelutin.com/projects/wao/repository/revisions/2154 Log: refs #5446 make better user locale detection Modified: trunk/wao-persistence/src/main/java/fr/ifremer/wao/WaoUtils.java trunk/wao-web/src/main/java/fr/ifremer/wao/web/WaoJspActionSupport.java trunk/wao-web/src/main/java/fr/ifremer/wao/web/converter/AbstractDateConverter.java trunk/wao-web/src/main/webapp/WEB-INF/content/edit-contact-input.jsp trunk/wao-web/src/main/webapp/WEB-INF/decorators/layout.jsp Modified: trunk/wao-persistence/src/main/java/fr/ifremer/wao/WaoUtils.java =================================================================== --- trunk/wao-persistence/src/main/java/fr/ifremer/wao/WaoUtils.java 2014-07-16 09:56:58 UTC (rev 2153) +++ trunk/wao-persistence/src/main/java/fr/ifremer/wao/WaoUtils.java 2014-07-16 15:26:24 UTC (rev 2154) @@ -57,6 +57,8 @@ @Deprecated protected static final String TIME_PATTERN = "HH:mm"; + protected static final String FRENCH_LANGUAGE = new Locale("fr").getLanguage(); + @Deprecated public static String formatMonth(Date date) { return formatDate(date, MONTH_PATTERN); @@ -178,4 +180,9 @@ public static String getMonthPattern(Locale locale) { return I18n.l(locale, "wao.month.pattern"); } + + public static boolean isFrench(Locale locale) { + boolean isFrench = FRENCH_LANGUAGE.equals(locale.getLanguage()); + return isFrench; + } } Modified: trunk/wao-web/src/main/java/fr/ifremer/wao/web/WaoJspActionSupport.java =================================================================== --- trunk/wao-web/src/main/java/fr/ifremer/wao/web/WaoJspActionSupport.java 2014-07-16 09:56:58 UTC (rev 2153) +++ trunk/wao-web/src/main/java/fr/ifremer/wao/web/WaoJspActionSupport.java 2014-07-16 15:26:24 UTC (rev 2154) @@ -167,4 +167,8 @@ return result; } + public boolean isLocaleFrench() { + return WaoUtils.isFrench(getLocale()); + } + } Modified: trunk/wao-web/src/main/java/fr/ifremer/wao/web/converter/AbstractDateConverter.java =================================================================== --- trunk/wao-web/src/main/java/fr/ifremer/wao/web/converter/AbstractDateConverter.java 2014-07-16 09:56:58 UTC (rev 2153) +++ trunk/wao-web/src/main/java/fr/ifremer/wao/web/converter/AbstractDateConverter.java 2014-07-16 15:26:24 UTC (rev 2154) @@ -22,8 +22,10 @@ */ import com.google.common.base.Preconditions; +import com.google.common.collect.ImmutableSet; import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.conversion.TypeConversionException; +import fr.ifremer.wao.WaoUtils; import org.apache.commons.lang3.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -71,18 +73,30 @@ Locale locale = (Locale) map.get(ActionContext.LOCALE); Preconditions.checkNotNull(locale, "No locale found in ActionContext"); - parsedValue = parseDate(locale, string, strings, true); + if (log.isDebugEnabled()) { + log.debug("to convert date, will use locale " + locale.toLanguageTag()); + } - if (parsedValue == null) { + if ( ! ImmutableSet.of(Locale.FRENCH, Locale.ENGLISH).contains(locale)) { + if (log.isWarnEnabled()) { + log.warn("locale " + locale + " is not french nor english, will default to french"); + } + locale = Locale.FRENCH; + } + + try { + parsedValue = parse(locale, string); + } catch (ParseException e) { + //FIXME If action is changing language, then date are not in good format //FIXME Let's try why other locale... - if (Locale.FRENCH.equals(locale)) { - locale = Locale.ENGLISH; - } else { - locale = Locale.FRENCH; + locale = WaoUtils.isFrench(locale) ? Locale.ENGLISH : Locale.FRENCH; + try { + parsedValue = parse(locale, string); + } catch (ParseException e1) { + throw new TypeConversionException("strings=" + Arrays.toString(strings)); } - parsedValue = parseDate(locale, string, strings, false); } } @@ -93,22 +107,6 @@ } } - protected Date parseDate(Locale locale, String string, String[] strings, boolean swallonError) { - Preconditions.checkNotNull(locale); - try { - return parse(locale, string); - } catch (ParseException e) { - if (swallonError) { - return null; - } - //FIXME See why we don't see the error - if (log.isWarnEnabled()) { - log.warn("could not format parse date " + string, e); - } - throw new TypeConversionException("strings=" + Arrays.toString(strings)); - } - } - @Override public String convertToString(Map map, Object o) { Modified: trunk/wao-web/src/main/webapp/WEB-INF/content/edit-contact-input.jsp =================================================================== --- trunk/wao-web/src/main/webapp/WEB-INF/content/edit-contact-input.jsp 2014-07-16 09:56:58 UTC (rev 2153) +++ trunk/wao-web/src/main/webapp/WEB-INF/content/edit-contact-input.jsp 2014-07-16 15:26:24 UTC (rev 2154) @@ -71,7 +71,7 @@ $('input.date').datetimepicker({ minView: 2, - <s:if test="\"fr-FR\".equals(locale.toLanguageTag())"> + <s:if test="localeFrench"> language: 'fr', format: 'dd/mm/yyyy' </s:if> @@ -82,7 +82,7 @@ }); $('input.date-time').datetimepicker({ - <s:if test="\"fr-FR\".equals(locale.toLanguageTag())"> + <s:if test="localeFrench"> language: 'fr', format: 'dd/mm/yyyy hh:ii' </s:if> Modified: trunk/wao-web/src/main/webapp/WEB-INF/decorators/layout.jsp =================================================================== --- trunk/wao-web/src/main/webapp/WEB-INF/decorators/layout.jsp 2014-07-16 09:56:58 UTC (rev 2153) +++ trunk/wao-web/src/main/webapp/WEB-INF/decorators/layout.jsp 2014-07-16 15:26:24 UTC (rev 2154) @@ -28,17 +28,26 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title><decorator:title default="Wao"/> - Wao</title> - <sj:head locale="fr" jqueryui="true" loadAtOnce="true"/> + <s:if test="localeFrench"> + <sj:head locale="fr" jqueryui="true" loadAtOnce="true"/> + </s:if> + <s:else> + <sj:head locale="en" jqueryui="true" loadAtOnce="true"/> + </s:else> <sb:head /> <script src="<s:url value="/moment-js-2.5.1/moment-with-langs.js" />"></script> <script src="<s:url value="/select2-3.4.5/select2.min.js" />"></script> - <script src="<s:url value="/select2-3.4.5/select2_locale_fr.js" />"></script> + <s:if test="localeFrench"> + <script src="<s:url value="/select2-3.4.5/select2_locale_fr.js" />"></script> + </s:if> <script src="<s:url value="/bootstrap-2.3.1/bootstrap-tooltip.js" />"></script> <script src="<s:url value="/bootstrap-2.3.1/bootstrap-popover.js" />"></script> <script src="<s:url value="/spin.js-2.0.0/spin.js" />"></script> <script src="<s:url value="/spin.js-2.0.0/jquery.spin.js" />"></script> <script src="<s:url value="/bootstrap-datetimepicker-2.3.1/js/bootstrap-datetimepicker.min.js" />"></script> - <script src="<s:url value="/bootstrap-datetimepicker-2.3.1/js/locales/bootstrap-datetimepicker.fr.js" />"></script> + <s:if test="localeFrench"> + <script src="<s:url value="/bootstrap-datetimepicker-2.3.1/js/locales/bootstrap-datetimepicker.fr.js" />"></script> + </s:if> <script src="<s:url value="/wao.js" />"></script> <script src="<s:url value='/endpoints-js.jsp'/>"></script> <link rel="stylesheet" type="text/css" href="<s:url value="/select2-3.4.5/select2.css" />" /> @@ -162,7 +171,7 @@ <li> <s:url id="changeLocaleUrl" includeParams="get"> <s:param name="request_locale"> - <s:if test="\"fr\".equals(locale.toLanguageTag())"> + <s:if test="localeFrench"> en </s:if> <s:else>
participants (1)
-
bleny@users.forge.codelutin.com