From d8654bdf5c5e0e062a683b40ba826f9638e25d41 Mon Sep 17 00:00:00 2001 From: James Moger <james.moger@gitblit.com> Date: Mon, 28 Apr 2014 12:47:08 -0400 Subject: [PATCH] Merged #51 "Can not force default locale to English or to a locale with a country code" --- src/main/java/com/gitblit/manager/IRuntimeManager.java | 9 +++++++++ src/main/java/com/gitblit/manager/GitblitManager.java | 6 ++++++ releases.moxie | 1 + src/main/java/com/gitblit/wicket/GitBlitWebApp.java | 7 +++---- src/test/java/com/gitblit/tests/mock/MockRuntimeManager.java | 6 ++++++ src/main/java/com/gitblit/models/UserPreferences.java | 6 ++++++ src/main/java/com/gitblit/manager/RuntimeManager.java | 19 +++++++++++++++++++ 7 files changed, 50 insertions(+), 4 deletions(-) diff --git a/releases.moxie b/releases.moxie index 207209c..41719df 100644 --- a/releases.moxie +++ b/releases.moxie @@ -13,6 +13,7 @@ - Fix subdirectory links in pages servlet (issue-411) - Fix subdirectory navigation in pages servlet (issue-412) - Fix bug in adding invalid or empty SSH keys (ticket-50) + - Fix forcing default locale to en or LANG_CC for web ui (ticket-51) changes: - improve French translation (pr-176) - simplify current plugin release detection and ignore the currentRelease registry field diff --git a/src/main/java/com/gitblit/manager/GitblitManager.java b/src/main/java/com/gitblit/manager/GitblitManager.java index 790445a..5b16ef6 100644 --- a/src/main/java/com/gitblit/manager/GitblitManager.java +++ b/src/main/java/com/gitblit/manager/GitblitManager.java @@ -27,6 +27,7 @@ import java.util.Collection; import java.util.Date; import java.util.List; +import java.util.Locale; import java.util.Map; import java.util.TimeZone; @@ -606,6 +607,11 @@ } @Override + public Locale getLocale() { + return runtimeManager.getLocale(); + } + + @Override public boolean isDebugMode() { return runtimeManager.isDebugMode(); } diff --git a/src/main/java/com/gitblit/manager/IRuntimeManager.java b/src/main/java/com/gitblit/manager/IRuntimeManager.java index acd3a57..29e7368 100644 --- a/src/main/java/com/gitblit/manager/IRuntimeManager.java +++ b/src/main/java/com/gitblit/manager/IRuntimeManager.java @@ -17,6 +17,7 @@ import java.io.File; import java.util.Date; +import java.util.Locale; import java.util.Map; import java.util.TimeZone; @@ -39,6 +40,14 @@ TimeZone getTimezone(); /** + * Returns the fixed locale for clients, or null if clients may choose their locale + * + * @return a fixed locale or null if clients are allowed to specify locale preference + * @since 1.5.1 + */ + Locale getLocale(); + + /** * Determine if this Gitblit instance is actively serving git repositories * or if it is merely a repository viewer. * diff --git a/src/main/java/com/gitblit/manager/RuntimeManager.java b/src/main/java/com/gitblit/manager/RuntimeManager.java index 9805701..52f4d67 100644 --- a/src/main/java/com/gitblit/manager/RuntimeManager.java +++ b/src/main/java/com/gitblit/manager/RuntimeManager.java @@ -18,6 +18,7 @@ import java.io.File; import java.text.SimpleDateFormat; import java.util.Date; +import java.util.Locale; import java.util.Map; import java.util.TimeZone; @@ -63,6 +64,8 @@ logger.info("Settings : " + settings.toString()); logTimezone("JVM timezone: ", TimeZone.getDefault()); logTimezone("App timezone: ", getTimezone()); + logger.info("JVM locale : " + Locale.getDefault()); + logger.info("App locale : " + (getLocale() == null ? "<client>" : getLocale())); return this; } @@ -146,6 +149,22 @@ logger.info("{}{} ({})", new Object [] { type, zone.getID(), offset }); } + @Override + public Locale getLocale() { + String lc = settings.getString(Keys.web.forceDefaultLocale, null); + if (!StringUtils.isEmpty(lc)) { + int underscore = lc.indexOf('_'); + if (underscore > 0) { + String lang = lc.substring(0, underscore); + String cc = lc.substring(underscore + 1); + return new Locale(lang, cc); + } else { + return new Locale(lc); + } + } + return null; + } + /** * Is Gitblit running in debug mode? * diff --git a/src/main/java/com/gitblit/models/UserPreferences.java b/src/main/java/com/gitblit/models/UserPreferences.java index baab071..44e4493 100644 --- a/src/main/java/com/gitblit/models/UserPreferences.java +++ b/src/main/java/com/gitblit/models/UserPreferences.java @@ -49,6 +49,12 @@ if (StringUtils.isEmpty(locale)) { return null; } + int underscore = locale.indexOf('_'); + if (underscore > 0) { + String lang = locale.substring(0, underscore); + String cc = locale.substring(underscore + 1); + return new Locale(lang, cc); + } return new Locale(locale); } diff --git a/src/main/java/com/gitblit/wicket/GitBlitWebApp.java b/src/main/java/com/gitblit/wicket/GitBlitWebApp.java index 58fc5b7..c4fdeda 100644 --- a/src/main/java/com/gitblit/wicket/GitBlitWebApp.java +++ b/src/main/java/com/gitblit/wicket/GitBlitWebApp.java @@ -41,7 +41,6 @@ import com.gitblit.manager.IUserManager; import com.gitblit.tickets.ITicketService; import com.gitblit.transport.ssh.IPublicKeyManager; -import com.gitblit.utils.StringUtils; import com.gitblit.wicket.pages.ActivityPage; import com.gitblit.wicket.pages.BlamePage; import com.gitblit.wicket.pages.BlobDiffPage; @@ -242,9 +241,9 @@ public final Session newSession(Request request, Response response) { GitBlitWebSession gitBlitWebSession = new GitBlitWebSession(request); - String forcedLocale = settings.getString(Keys.web.forceDefaultLocale, null); - if (!StringUtils.isEmpty(forcedLocale)) { - gitBlitWebSession.setLocale(new Locale(forcedLocale)); + Locale forcedLocale = runtime().getLocale(); + if (forcedLocale != null) { + gitBlitWebSession.setLocale(forcedLocale); } return gitBlitWebSession; } diff --git a/src/test/java/com/gitblit/tests/mock/MockRuntimeManager.java b/src/test/java/com/gitblit/tests/mock/MockRuntimeManager.java index 8e518de..6e56a87 100644 --- a/src/test/java/com/gitblit/tests/mock/MockRuntimeManager.java +++ b/src/test/java/com/gitblit/tests/mock/MockRuntimeManager.java @@ -17,6 +17,7 @@ import java.io.File; import java.util.Date; +import java.util.Locale; import java.util.Map; import java.util.TimeZone; @@ -71,6 +72,11 @@ } @Override + public Locale getLocale() { + return Locale.getDefault(); + } + + @Override public boolean isServingRepositories() { return true; } -- Gitblit v1.9.1