Commit 0aeea3c4 authored by Georgios Dagkakis's avatar Georgios Dagkakis

Validation message translation

See merge request !1001
parents 1b11dd03 4e12f94c
Pipeline #13028 failed with stage
......@@ -1042,7 +1042,7 @@ def renderForm(traversed_document, form, response_dict, key_prefix=None, selecti
try:
response_dict[field.id] = renderField(traversed_document, field, form, key_prefix=key_prefix, selection_params=selection_params, request_field=not use_relation_form_page_template)
if field_errors.has_key(field.id):
response_dict[field.id]["error_text"] = field_errors[field.id].error_text
response_dict[field.id]["error_text"] = field_errors[field.id].getMessage(Base_translateString)
except AttributeError as error:
# Do not crash if field configuration is wrong.
log("Field {} rendering failed because of {!s}".format(field.id, error), level=800)
......
......@@ -30,8 +30,7 @@
<div class="input" tal:content="structure python: html_tuple[1]" />
<span tal:condition="field_has_error"
class="error"
tal:content="python: field_errors[field_id].error_text"
i18n:translate="" i18n:domain="ui" />
tal:content="python: field_errors[field_id].getMessage(here.Base_translateString)" />
<p class="clear" tal:condition="not:is_web_mode"></p>
</tal:block>
</div>
......
......@@ -5,6 +5,7 @@
# from Products.Formulator.Errors import ValidationError, FormValidationError
from Products.PythonScripts.Utility import allow_class
from AccessControl import ClassSecurityInfo
class FormValidationError(Exception):
......@@ -17,6 +18,8 @@ allow_class(FormValidationError)
class ValidationError(Exception):
security = ClassSecurityInfo()
def __init__(self, error_key, field, error_text=None):
Exception.__init__(self, error_key)
self.error_key = error_key
......@@ -24,8 +27,18 @@ class ValidationError(Exception):
self.field = field
if error_text is not None:
self.error_text = error_text
self.is_message_to_translate = False
else:
self.error_text = field.get_error_message(error_key)
self.is_message_to_translate = True
security.declarePublic('getMessage')
def getMessage(self, translation_service=None):
if not self.is_message_to_translate:
return self.error_text
if translation_service is None:
return self.error_text
return translation_service(self.error_text)
allow_class(ValidationError)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment