set fallback locale to English, ultimate fall through is to return the code string itself

pull/803/head
Justin Richer 2015-03-12 17:28:27 -04:00
parent 285ad71874
commit 2abcd96bbe
3 changed files with 32 additions and 7 deletions

View File

@ -3,7 +3,7 @@
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%> <%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
<%@ taglib prefix="security" uri="http://www.springframework.org/security/tags"%> <%@ taglib prefix="security" uri="http://www.springframework.org/security/tags"%>
<spring:message code="home.welcome" var="title"/> <spring:message code="home.title" var="title"/>
<o:header title="${title}" /> <o:header title="${title}" />
<o:topbar pageName="Home" /> <o:topbar pageName="Home" />
<div class="container-fluid main"> <div class="container-fluid main">

View File

@ -363,5 +363,13 @@
"number_clients": "Authorized clients: <span class=\"label label-info\" id=\"clientCount\">{0}</span>", "number_clients": "Authorized clients: <span class=\"label label-info\" id=\"clientCount\">{0}</span>",
"number_approvals": "Approved sites: <span class=\"label label-info\" id=\"approvalCount\">{0}</span>" "number_approvals": "Approved sites: <span class=\"label label-info\" id=\"approvalCount\">{0}</span>"
} }
},
"topbar": {
"about": "About",
"contact": "Contact",
"statistics": "Statistics",
"home": "Home",
"login": "Log in",
"logout": "Log out"
} }
} }

View File

@ -47,6 +47,8 @@ public class JsonMessageSource extends AbstractMessageSource {
private static final Logger logger = LoggerFactory.getLogger(JsonMessageSource.class); private static final Logger logger = LoggerFactory.getLogger(JsonMessageSource.class);
private Resource baseDirectory; private Resource baseDirectory;
private Locale fallbackLocale = new Locale("en"); // US English is the fallback language
private Map<Locale, JsonObject> languageMaps = new HashMap<>(); private Map<Locale, JsonObject> languageMaps = new HashMap<>();
@ -55,9 +57,20 @@ public class JsonMessageSource extends AbstractMessageSource {
JsonObject lang = getLanguageMap(locale); JsonObject lang = getLanguageMap(locale);
MessageFormat mf = getMessageFormat(code, locale, lang); String value = getValue(code, lang);
if (value == null) {
// if we haven't found anything, try the default locale
lang = getLanguageMap(fallbackLocale);
value = getValue(code, lang);
}
if (value == null) {
value = code;
}
MessageFormat mf = new MessageFormat(value, locale);
// TODO Auto-generated method stub
return mf; return mf;
} }
@ -67,14 +80,19 @@ public class JsonMessageSource extends AbstractMessageSource {
* @param lang * @param lang
* @return * @return
*/ */
private MessageFormat getMessageFormat(String code, Locale locale, JsonObject lang) { private String getValue(String code, JsonObject lang) {
// if there's no language map, nothing to look up
if (lang == null) {
return null;
}
JsonElement e = lang; JsonElement e = lang;
Iterable<String> parts = Splitter.on('.').split(code); Iterable<String> parts = Splitter.on('.').split(code);
Iterator<String> it = parts.iterator(); Iterator<String> it = parts.iterator();
String value = code; String value = null;
while (it.hasNext()) { while (it.hasNext()) {
String p = it.next(); String p = it.next();
@ -99,9 +117,8 @@ public class JsonMessageSource extends AbstractMessageSource {
} }
MessageFormat mf = new MessageFormat(value, locale); return value;
return mf;
} }
/** /**