code: def _translate_errors(self, errors, translate):
          
          for prop in errors:
              prop_errors = errors[prop]
  
              # state and simple
              if type(prop_errors) is list:
                  for index, error in enumerate(prop_errors):
                      message = translate(error.message)
                      message = self.format_error(message, error.kwargs)
                      errors[prop][index] = message
  
              # entity and collection direct
              if type(prop_errors) is dict and 'direct' in prop_errors:
                  for index, error in enumerate(prop_errors['direct']):
                      message = translate(error.message)
                      message = self.format_error(message, error.kwargs)
                      errors[prop]['direct'][index] = message
  
              # entity schema
              if type(prop_errors) is dict and 'schema' in prop_errors:
                  errors[prop]['schema'] = self._translate_errors(
                      prop_errors['schema'],
                      translate
                  )
  
              # collection schema
              if type(prop_errors) is dict and 'collection' in prop_errors:
                  translated = dict()
                  for index, result in prop_errors['collection'].items():
                      translated[index] = self._translate_errors(
                          result.errors,
                          translate
                      )
                      errors[prop]['collection'] = translated
  
          return errors
docs: Recursively apply translate callback to each error message