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