]> source.dussan.org Git - gitblit.git/commitdiff
Fix forcing default locale to en or LANG_CC for web ui 51/51/1
authorJames Moger <james.moger@gitblit.com>
Mon, 28 Apr 2014 16:44:38 +0000 (12:44 -0400)
committerJames Moger <james.moger@gitblit.com>
Mon, 28 Apr 2014 16:44:38 +0000 (12:44 -0400)
releases.moxie
src/main/java/com/gitblit/manager/GitblitManager.java
src/main/java/com/gitblit/manager/IRuntimeManager.java
src/main/java/com/gitblit/manager/RuntimeManager.java
src/main/java/com/gitblit/models/UserPreferences.java
src/main/java/com/gitblit/wicket/GitBlitWebApp.java
src/test/java/com/gitblit/tests/mock/MockRuntimeManager.java

index 207209cd15d34f5a6929d2fc71e4fd58c763b4d8..41719dfc05e65bfb02c078417ec49abb066f7268 100644 (file)
@@ -13,6 +13,7 @@ r23: {
     - 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 
index 790445a7e22b5bcd24b6eece6a26bc70979cda4b..5b16ef668cc32098e34448050726cade72a3ec4a 100644 (file)
@@ -27,6 +27,7 @@ import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Date;
 import java.util.List;
+import java.util.Locale;
 import java.util.Map;
 import java.util.TimeZone;
 
@@ -605,6 +606,11 @@ public class GitblitManager implements IGitblit {
                return runtimeManager.getTimezone();
        }
 
+       @Override
+       public Locale getLocale() {
+               return runtimeManager.getLocale();
+       }
+
        @Override
        public boolean isDebugMode() {
                return runtimeManager.isDebugMode();
index acd3a5763493f3c6797941042b97bb06cb8d200f..29e7368f40143569eab826c92ec706e92873555d 100644 (file)
@@ -17,6 +17,7 @@ package com.gitblit.manager;
 
 import java.io.File;
 import java.util.Date;
+import java.util.Locale;
 import java.util.Map;
 import java.util.TimeZone;
 
@@ -38,6 +39,14 @@ public interface IRuntimeManager extends IManager {
         */
        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.
index 9805701b1c428eb96c0a3f79e9f1598c61ecd160..52f4d67bbccc8a9207f185f75d740c2d95bbd90f 100644 (file)
@@ -18,6 +18,7 @@ package com.gitblit.manager;
 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 @@ public class RuntimeManager implements IRuntimeManager {
                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 @@ public class RuntimeManager implements IRuntimeManager {
                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?
         *
index baab0719517b216c0e72f410ba89315c6a06f1f5..44e44933eedb301d9f9c9b2b5abb594eaa94f468 100644 (file)
@@ -49,6 +49,12 @@ public class UserPreferences implements Serializable {
                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);
        }
 
index 58fc5b7a025739a44506459757e6f7ba5c917024..c4fdeda586706173c5d124ab8fe689988dbface9 100644 (file)
@@ -41,7 +41,6 @@ import com.gitblit.manager.IRuntimeManager;
 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 class GitBlitWebApp extends WebApplication {
        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;
        }
index 8e518de574307256ce753f8ba60028cfec071ece..6e56a873031195643cec9f4974844e16b524168d 100644 (file)
@@ -17,6 +17,7 @@ package com.gitblit.tests.mock;
 
 import java.io.File;
 import java.util.Date;
+import java.util.Locale;
 import java.util.Map;
 import java.util.TimeZone;
 
@@ -70,6 +71,11 @@ public class MockRuntimeManager implements IRuntimeManager {
                return TimeZone.getDefault();
        }
 
+       @Override
+       public Locale getLocale() {
+               return Locale.getDefault();
+       }
+
        @Override
        public boolean isServingRepositories() {
                return true;