diff --git a/core/pom.xml b/core/pom.xml
index a57705a5fe..511e3ab419 100644
--- a/core/pom.xml
+++ b/core/pom.xml
@@ -37,6 +37,21 @@
1.2
true
+
+ org.jvnet.localizer
+ maven-localizer-plugin
+
+
+
+ generate
+
+
+ Messages.properties
+ target/generated-sources/localizer
+
+
+
+
maven-antlr-plugin
@@ -446,6 +461,11 @@
commons-collections
3.2
+
+ org.jvnet.localizer
+ localizer
+ 1.0
+
com.octo.captcha
jcaptcha-all
diff --git a/core/src/main/java/hudson/WebAppMain.java b/core/src/main/java/hudson/WebAppMain.java
index 92dc8d423d..a8026dcb8c 100644
--- a/core/src/main/java/hudson/WebAppMain.java
+++ b/core/src/main/java/hudson/WebAppMain.java
@@ -21,12 +21,15 @@ import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
+import java.util.Locale;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.net.URLClassLoader;
import java.net.URL;
import org.kohsuke.stapler.Stapler;
+import org.kohsuke.stapler.StaplerRequest;
+import org.jvnet.localizer.LocaleProvider;
/**
* Entry point when Hudson is used as a webapp.
@@ -44,6 +47,19 @@ public class WebAppMain implements ServletContextListener {
try {
final ServletContext context = event.getServletContext();
+ // use the current request to determine the language
+ LocaleProvider.setProvider(new LocaleProvider() {
+ public Locale get() {
+ Locale locale=null;
+ StaplerRequest req = Stapler.getCurrentRequest();
+ if(req!=null)
+ locale = req.getLocale();
+ if(locale==null)
+ locale = Locale.getDefault();
+ return locale;
+ }
+ });
+
// quick check to see if we (seem to) have enough permissions to run. (see #719)
JVM jvm;
try {
diff --git a/core/src/main/java/hudson/security/GlobalMatrixAuthorizationStrategy.java b/core/src/main/java/hudson/security/GlobalMatrixAuthorizationStrategy.java
index 49319b8ca1..1c92902db8 100644
--- a/core/src/main/java/hudson/security/GlobalMatrixAuthorizationStrategy.java
+++ b/core/src/main/java/hudson/security/GlobalMatrixAuthorizationStrategy.java
@@ -6,7 +6,7 @@ import com.thoughtworks.xstream.converters.UnmarshallingContext;
import com.thoughtworks.xstream.io.HierarchicalStreamReader;
import com.thoughtworks.xstream.io.HierarchicalStreamWriter;
import hudson.model.Descriptor;
-import hudson.security.Permission.Group;
+import hudson.security.PermissionGroup;
import net.sf.json.JSONObject;
import org.acegisecurity.acls.sid.GrantedAuthoritySid;
import org.acegisecurity.acls.sid.PrincipalSid;
@@ -173,7 +173,7 @@ public class GlobalMatrixAuthorizationStrategy extends AuthorizationStrategy {
}
public String getDisplayName() {
- return "Role-based security";
+ return Messages.GlobalMatrixAuthorizationStrategy_DisplayName();
}
public AuthorizationStrategy newInstance(StaplerRequest req, JSONObject formData) throws FormException {
@@ -194,8 +194,8 @@ public class GlobalMatrixAuthorizationStrategy extends AuthorizationStrategy {
return "/help/security/global-matrix.html";
}
- public List getAllGroups() {
- List groups = new ArrayList(Permission.getAllGroups());
+ public List getAllGroups() {
+ List groups = new ArrayList(PermissionGroup.getAll());
groups.remove(Permission.getGroup(Permission.class));
return groups;
}
diff --git a/core/src/main/resources/hudson/security/Messages.properties b/core/src/main/resources/hudson/security/Messages.properties
new file mode 100644
index 0000000000..524bf6c034
--- /dev/null
+++ b/core/src/main/resources/hudson/security/Messages.properties
@@ -0,0 +1 @@
+GlobalMatrixAuthorizationStrategy.DisplayName=Matrix-based security
diff --git a/core/src/main/resources/hudson/security/Messages_ja.properties b/core/src/main/resources/hudson/security/Messages_ja.properties
new file mode 100644
index 0000000000..67c04b1cca
--- /dev/null
+++ b/core/src/main/resources/hudson/security/Messages_ja.properties
@@ -0,0 +1 @@
+GlobalMatrixAuthorizationStrategy.DisplayName=\u884c\u5217\u306b\u3088\u308b\u6a29\u9650\u8a2d\u5b9a