diff --git a/validation.py b/validation.py
index b7b04835c474e80fe7627c92a6e77a6c506d845c..00af2f0d999f2c033d818eeb214fe4fcce9a3089 100644
--- a/validation.py
+++ b/validation.py
@@ -36,7 +36,7 @@ def validate_extra_groups(data, requireAtLeastOne, errors):
         # so the dataset came from manual editing via the web-frontend.
         if not value:
             if requireAtLeastOne:
-                errors['groups'] = 'at least one group needed'
+                errors['groups'] = _('at least one group needed')
             data[('groups', 0, 'id')] = ''
             return
 
@@ -47,7 +47,7 @@ def validate_extra_groups(data, requireAtLeastOne, errors):
                 # del data[k]
         if len(groups) == 0:
             if requireAtLeastOne:
-                errors['groups'] = 'at least one group needed'
+                errors['groups'] = _('at least one group needed')
             return
 
         for num, group in zip(list(range(len(groups))), groups):
@@ -56,7 +56,7 @@ def validate_extra_groups(data, requireAtLeastOne, errors):
         # dataset might come from a harvest process
         if not data.get(('groups', 0, 'id'), False) and \
            not data.get(('groups', 0, 'name'), False):
-            errors['groups'] = 'at least one group needed'
+            errors['groups'] = _('at least one group needed')
 
 
 def validate_extras(key, data, errors, context):
@@ -89,7 +89,7 @@ def validate_extra_date_new(key, field, data, optional, errors):
 
     if not value:
         if not optional:
-            errors[field] = 'empty'
+            errors[field] = _('empty')
         return
     else:
         if re.match(r'\d\d\d\d-\d\d-\d\d', value):
@@ -99,7 +99,7 @@ def validate_extra_date_new(key, field, data, optional, errors):
                 return
             except ValueError:
                 pass
-        errors[field] = 'not a valid date'
+        errors[field] = _('not a valid date')
 
 
 def validate_licenseAttributionByText(key, data, errors, context):