diff --git a/pom.xml b/pom.xml
index 0081deb..1f50b5c 100644
--- a/pom.xml
+++ b/pom.xml
@@ -87,6 +87,12 @@
             <scope>provided</scope>
         </dependency>
         <dependency>
+            <groupId>com.google.code.findbugs</groupId>
+            <artifactId>jsr305</artifactId>
+            <version>3.0.0</version>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
             <groupId>org.apache.sling</groupId>
             <artifactId>org.apache.sling.api</artifactId>
             <version>2.4.2</version>
diff --git a/src/main/java/org/apache/sling/validation/testservices/ValidationPostResponse.java b/src/main/java/org/apache/sling/validation/testservices/ValidationPostResponse.java
index 4b71762..8cd45d8 100644
--- a/src/main/java/org/apache/sling/validation/testservices/ValidationPostResponse.java
+++ b/src/main/java/org/apache/sling/validation/testservices/ValidationPostResponse.java
@@ -20,9 +20,9 @@
 
 import java.io.IOException;
 import java.io.PrintWriter;
-import java.util.List;
-import java.util.Map;
+import java.util.ResourceBundle;
 
+import javax.annotation.Nonnull;
 import javax.servlet.http.HttpServletResponse;
 
 import org.apache.sling.commons.json.JSONArray;
@@ -37,8 +37,13 @@
 public class ValidationPostResponse extends AbstractPostResponse {
 
     private ValidationResult validationResult;
+    private final ResourceBundle resourceBundle;
     private static final Logger LOG = LoggerFactory.getLogger(ValidationPostResponse.class);
 
+    public ValidationPostResponse(@Nonnull ResourceBundle resourceBundle) {
+        this.resourceBundle = resourceBundle;
+    }
+
     public void setValidationResult(ValidationResult validationResult) {
         this.validationResult = validationResult;
     }
@@ -55,7 +60,7 @@
                 JSONArray failures = new JSONArray();
                 for (ValidationFailure failure : validationResult.getFailures()) {
                     JSONObject failureJson = new JSONObject();
-                    failureJson.put("message", failure.getMessage());
+                    failureJson.put("message", failure.getMessage(resourceBundle));
                     failureJson.put("location", failure.getLocation());
                     failures.put(failureJson);
                 }
diff --git a/src/main/java/org/apache/sling/validation/testservices/ValidationPostResponseCreator.java b/src/main/java/org/apache/sling/validation/testservices/ValidationPostResponseCreator.java
index d96c201..a884749 100644
--- a/src/main/java/org/apache/sling/validation/testservices/ValidationPostResponseCreator.java
+++ b/src/main/java/org/apache/sling/validation/testservices/ValidationPostResponseCreator.java
@@ -18,6 +18,8 @@
  */
  package org.apache.sling.validation.testservices;
 
+import java.util.Locale;
+
 import org.apache.felix.scr.annotations.Component;
 import org.apache.felix.scr.annotations.Service;
 import org.apache.sling.api.SlingHttpServletRequest;
@@ -33,7 +35,7 @@
     public PostResponse createPostResponse(SlingHttpServletRequest request) {
         String operation = request.getParameter(SlingPostConstants.RP_OPERATION);
         if (operation != null && "validation".equals(operation)) {
-            return new ValidationPostResponse();
+            return new ValidationPostResponse(request.getResourceBundle(Locale.US));
         }
         return null;
     }
diff --git a/src/main/resources/SLING-CONTENT/apps/sling/validation/models/model1.json b/src/main/resources/SLING-CONTENT/apps/sling/validation/models/model1.json
index 8b59679..85ad3bc 100644
--- a/src/main/resources/SLING-CONTENT/apps/sling/validation/models/model1.json
+++ b/src/main/resources/SLING-CONTENT/apps/sling/validation/models/model1.json
@@ -13,13 +13,12 @@
                 "jcr:primaryType" : "nt:unstructured",
                 "org.apache.sling.validation.impl.validators.RegexValidator": {
                     "jcr:primaryType" : "nt:unstructured",
-                    "validatorArguments" : ["regex=^\\p{L}+$"]
+                    "validatorArguments" : ["regex=^\\\p{Upper}+$"]
                 }
             }
         },
         "field2" : {
-            "jcr:primaryType" : "nt:unstructured",
-            "propertyType" : "date"
+            "jcr:primaryType" : "nt:unstructured"
         }
     }
 }
