Skip to content

Commit 4807b76

Browse files
author
Ian Wensink
committed
fix(rules): make error messages translatable through HN
1 parent f9149d7 commit 4807b76

File tree

6 files changed

+18
-14
lines changed

6 files changed

+18
-14
lines changed

src/BaseButton/index.jsx

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,17 @@ import PropTypes from 'prop-types';
33
import CSSModules from 'react-css-modules';
44
import styles from './styles.pcss';
55

6-
const BaseButton = ({ disabled, label, formSubmitAttributes, onClick, isPrimary, type }) =>
7-
(<button
6+
const BaseButton = ({ disabled, label, formSubmitAttributes, onClick, isPrimary, type }) => (
7+
<button
88
styleName={`button ${disabled ? 'disabled' : ''} ${isPrimary ? '' : 'secondary'}`}
99
disabled={disabled ? 'disabled' : null}
1010
{...formSubmitAttributes}
1111
onClick={onClick}
1212
type={type}
1313
>
1414
{label}
15-
</button>);
15+
</button>
16+
);
1617

1718
BaseButton.propTypes = {
1819
disabled: PropTypes.bool,

src/Date/index.jsx

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import { observer } from 'mobx-react';
22
import moment from 'moment';
33
import PropTypes from 'prop-types';
44
import React, { Component } from 'react';
5+
import { site } from 'hn-react';
56
import CSSModules from 'react-css-modules';
67
import DayPicker from 'react-day-picker';
78
import 'react-day-picker/lib/style.css';
@@ -87,7 +88,7 @@ class Date extends Component {
8788
hint: () =>
8889
(<RuleHint
8990
key={`date_${props.field['#webform_key']}`}
90-
hint={WebformUtils.getCustomValue(props.field, 'dateError', props.settings) || 'Please enter a valid date.'}
91+
hint={WebformUtils.getCustomValue(props.field, 'dateError', props.settings) || site.t('Please enter a valid date.')}
9192
/>),
9293
shouldValidate: field => field.isBlurred && !WebformUtils.isEmpty(field, field.getValue()),
9394
});
@@ -100,14 +101,14 @@ class Date extends Component {
100101

101102
switch(result.type) {
102103
case 'before':
103-
hint = WebformUtils.getCustomValue(props.field, 'dateBeforeError', props.settings) || 'Please enter a date before :max';
104+
hint = WebformUtils.getCustomValue(props.field, 'dateBeforeError', props.settings) || site.t('Please enter a date before {{max}}');
104105
break;
105106
case 'after':
106-
hint = WebformUtils.getCustomValue(props.field, 'dateAfterError', props.settings) || 'Please enter a date after :min';
107+
hint = WebformUtils.getCustomValue(props.field, 'dateAfterError', props.settings) || site.t('Please enter a date after {{min}}');
107108
break;
108109
default:
109110
case 'range':
110-
hint = WebformUtils.getCustomValue(props.field, 'dateRangeError', props.settings) || 'Please enter a date between :min and :max';
111+
hint = WebformUtils.getCustomValue(props.field, 'dateRangeError', props.settings) || site.t('Please enter a date between {{min}} and {{max}}');
111112
break;
112113
}
113114

src/EmailField/index.jsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,13 +53,13 @@ class EmailField extends Component {
5353
rules.set(`email_${props.field['#webform_key']}`, {
5454
rule: () => field.isEmpty || validator.isEmail(field.value),
5555
hint: value =>
56-
<RuleHint key={`email_${props.field['#webform_key']}`} hint={WebformUtils.getCustomValue(props.field, 'emailError', props.settings) || 'Please enter a valid email.'} tokens={{ value }} />,
56+
<RuleHint key={`email_${props.field['#webform_key']}`} hint={WebformUtils.getCustomValue(props.field, 'emailError', props.settings) || site.t('Please enter a valid email.')} tokens={{ value }} />,
5757
shouldValidate: () => field.isBlurred && !field.isEmpty,
5858
});
5959
rules.set(`email_neverbounce_${props.field['#webform_key']}`, {
6060
rule: () => field.isEmpty || field.lookupSuccessful,
6161
hint: () =>
62-
<RuleHint key={`email_neverbounce_${props.field['#webform_key']}`} hint={WebformUtils.getCustomValue(props.field, 'neverBounceError', props.settings) || 'Please enter a valid email.'} />,
62+
<RuleHint key={`email_neverbounce_${props.field['#webform_key']}`} hint={WebformUtils.getCustomValue(props.field, 'neverBounceError', props.settings) || site.t('Please enter a valid email.')} />,
6363
shouldValidate: () => field.isBlurred && !field.isEmpty && validator.isEmail(field.value),
6464
});
6565

src/IBAN/index.jsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import React, { Component } from 'react';
22
import PropTypes from 'prop-types';
33
import iban from 'ibantools';
44
import { observer } from 'mobx-react';
5+
import { site } from 'hn-react';
56
import Input from '../Input';
67
import rules from '../Webform/rules';
78
import RuleHint from '../RuleHint';
@@ -29,7 +30,7 @@ class IBAN extends Component {
2930
rules.set(`iban_${props.field['#webform_key']}`, {
3031
rule: value => iban.isValidIBAN(value),
3132
hint: () =>
32-
<RuleHint key={`iban_${props.field['#webform_key']}`} hint={WebformUtils.getCustomValue(props.field, 'ibanError', props.settings) || 'Please enter a valid IBAN.'} />,
33+
<RuleHint key={`iban_${props.field['#webform_key']}`} hint={WebformUtils.getCustomValue(props.field, 'ibanError', props.settings) || site.t('Please enter a valid IBAN.')} />,
3334
shouldValidate: field => field.isBlurred,
3435
});
3536
}

src/Observables/Field.jsx

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import React from 'react';
22
import { observable, computed } from 'mobx';
33
import getNested from 'get-nested';
4+
import { site } from 'hn-react';
45
import RuleHint from '../RuleHint';
56
import rules from '../Webform/rules';
67
import { components } from '../index';
@@ -84,7 +85,7 @@ class Field {
8485
hint: value =>
8586
(<RuleHint
8687
key={`req_${this.key}`}
87-
hint={WebformUtils.getCustomValue(this.element, 'requiredError', this.formStore.form.settings) || 'This field is required'}
88+
hint={WebformUtils.getCustomValue(this.element, 'requiredError', this.formStore.form.settings) || site.t('This field is required')}
8889
tokens={{
8990
value,
9091
name: this.element['#title'],
@@ -99,7 +100,7 @@ class Field {
99100
rule: (value = '') => new RegExp(pattern).test(value) || this.isEmpty,
100101
hint: (value) => {
101102
const patternError = WebformUtils.getCustomValue(this.element, 'patternError', this.formStore.form.settings);
102-
const populatedPatternError = getNested(() => this.formStore.form.settings.custom_elements.patternError['#options'][patternError], this.element['#patternError'] || 'The value :value doesn\'t match the right pattern');
103+
const populatedPatternError = getNested(() => this.formStore.form.settings.custom_elements.patternError['#options'][patternError], this.element['#patternError'] || site.t('Please enter a valid value.'));
103104
return <RuleHint key={`pattern_${this.key}`} hint={populatedPatternError} tokens={{ value }} />;
104105
},
105106
shouldValidate: field => field.isBlurred && WebformUtils.validateRule(rules.get(`${supportedActions.required}_${this.key}`), field),

src/Relation/index.jsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
import React, { Component } from 'react';
22
import getNested from 'get-nested';
33
import PropTypes from 'prop-types';
4+
import { site } from 'hn-react';
45
import CSSModules from 'react-css-modules';
56
import { observer } from 'mobx-react';
6-
import { site } from 'hn-react';
77
import composeLookUp from '../LookUp';
88
import Fieldset from '../Fieldset';
99
import RuleHint from '../RuleHint';
@@ -104,7 +104,7 @@ class Relation extends Component {
104104
onBlur={this.props.onBlur}
105105
>
106106
{field.lookupSent && !field.lookupSuccessful &&
107-
<RuleHint component={<p className={styles['validation-message']} />} key={`relation_${this.props.field['#webform_key']}`} hint={WebformUtils.getCustomValue(this.props.field, 'relationError', this.props.settings) || 'We don\'t recognise this combination of relation number and postal code. Please check again, or proceed anyway.'} />
107+
<RuleHint component={<p className={styles['validation-message']} />} key={`relation_${this.props.field['#webform_key']}`} hint={WebformUtils.getCustomValue(this.props.field, 'relationError', this.props.settings) || site.t('We don\'t recognise this combination of relation number and postal code. Please check again, or proceed anyway.')} />
108108
}
109109
</Fieldset>
110110
);

0 commit comments

Comments
 (0)