ISIS-903: use Wicket's Request rather than Session to obtain the Locale ... so the translation used changes instantaneously based on the Accept-Language header
Project: http://git-wip-us.apache.org/repos/asf/isis/repo Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/db506103 Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/db506103 Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/db506103 Branch: refs/heads/master Commit: db5061034803dc084423ed452583c05a2c8374e3 Parents: a4498ac Author: Dan Haywood <[email protected]> Authored: Fri Feb 20 13:45:46 2015 +0000 Committer: Dan Haywood <[email protected]> Committed: Fri Feb 20 13:45:46 2015 +0000 ---------------------------------------------------------------------- .../viewer/services/LocaleProviderWicket.java | 3 ++- .../services/TranslationsResolverWicket.java | 17 ++++++++++++++++- 2 files changed, 18 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/isis/blob/db506103/core/viewer-wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/services/LocaleProviderWicket.java ---------------------------------------------------------------------- diff --git a/core/viewer-wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/services/LocaleProviderWicket.java b/core/viewer-wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/services/LocaleProviderWicket.java index 9f3b58d..f8bb598 100644 --- a/core/viewer-wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/services/LocaleProviderWicket.java +++ b/core/viewer-wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/services/LocaleProviderWicket.java @@ -21,6 +21,7 @@ package org.apache.isis.viewer.wicket.viewer.services; import java.util.Locale; import org.apache.wicket.Application; import org.apache.wicket.Session; +import org.apache.wicket.request.cycle.RequestCycle; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.apache.isis.applib.annotation.DomainService; @@ -46,7 +47,7 @@ public class LocaleProviderWicket implements LocaleProvider { // eg if request from RO viewer return null; } - return getSession().getLocale(); + return RequestCycle.get().getRequest().getLocale(); } protected Session getSession() { http://git-wip-us.apache.org/repos/asf/isis/blob/db506103/core/viewer-wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/services/TranslationsResolverWicket.java ---------------------------------------------------------------------- diff --git a/core/viewer-wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/services/TranslationsResolverWicket.java b/core/viewer-wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/services/TranslationsResolverWicket.java index 2abbbba..e6045a3 100644 --- a/core/viewer-wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/services/TranslationsResolverWicket.java +++ b/core/viewer-wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/services/TranslationsResolverWicket.java @@ -22,9 +22,15 @@ import java.io.File; import java.io.IOException; import java.net.URL; import java.nio.file.Path; +import java.util.Collections; import java.util.List; +import java.util.regex.Pattern; import javax.servlet.ServletContext; import com.google.common.base.Charsets; +import com.google.common.base.Predicate; +import com.google.common.collect.ImmutableList; +import com.google.common.collect.Iterables; +import com.google.common.collect.Lists; import com.google.common.io.CharSource; import com.google.common.io.Files; import com.google.common.io.Resources; @@ -78,12 +84,21 @@ public class TranslationsResolverWicket implements TranslationsResolver { return getIsisWicketApplication().getServletContext(); } + private static Pattern nonEmpty = Pattern.compile("^(#:|msgid|msgstr).+$"); private static List<String> readLines(final URL url) throws IOException { if(url == null) { return null; } final CharSource charSource = Resources.asCharSource(url, Charsets.UTF_8); - return charSource.readLines(); + final ImmutableList<String> strings = charSource.readLines(); + return Collections.unmodifiableList( + Lists.newArrayList( + Iterables.filter(strings, new Predicate<String>() { + @Override + public boolean apply(final String input) { + return input != null && nonEmpty.matcher(input).matches(); + } + }))); } protected IsisWicketApplication getIsisWicketApplication() {
