i18n: get translated field hints (#73752) #62

Merged
fpeters merged 1 commits from wip/73752-i18n-hint into main 2023-01-27 09:18:25 +01:00
2 changed files with 18 additions and 5 deletions

View File

@ -85,8 +85,15 @@ def test_i18n_form(pub, user, emails, http_requests):
formdef = FormDef()
formdef.name = 'test form'
formdef.fields = [
StringField(id='1', label='text field ', type='string'), # check strip()
ItemField(id='2', label='list field', type='item', items=['first', 'second', 'third']),
# label has a trailing white space to check for strip()
StringField(id='1', label='text field ', type='string', hint='an hint text'),
ItemField(
id='2',
label='list field',
type='item',
items=['first', 'second', 'third'],
hint='a second hint text',
),
]
formdef.workflow = workflow
formdef.store()
@ -109,6 +116,8 @@ def test_i18n_form(pub, user, emails, http_requests):
('Mail Body', 'Contenu du courriel'),
('Notification Title', 'Titre de notification'),
('Notification Body', 'Contenu de notification'),
('an hint text', 'un texte daide'),
('a second hint text', 'un deuxième texte daide'),
):
msg = TranslatableMessage()
msg.string = en
@ -118,14 +127,18 @@ def test_i18n_form(pub, user, emails, http_requests):
app = login(get_app(pub), username='foo', password='foo')
resp = app.get(formdef.get_url())
assert resp.pyquery('#form_label_f1').text() == 'text field *'
assert resp.pyquery('[data-field-id="1"] .hint').text() == 'an hint text'
assert resp.pyquery('select [value=""]').text() == 'a second hint text'
resp = app.get(formdef.get_url(), headers={'Accept-Language': 'fr'})
assert resp.pyquery('#form_label_f1').text() == 'champ texte*'
assert resp.pyquery('[data-field-id="1"] .hint').text() == 'un texte daide'
assert resp.pyquery('select [value=""]').text() == 'un deuxième texte daide'
resp = app.get(formdef.get_url(), headers={'Accept-Language': 'fr,en;q=0.7,es;q=0.3'})
assert resp.pyquery('h1').text() == 'formulaire test'
assert resp.pyquery('#form_label_f1').text() == 'champ texte*'
assert resp.pyquery('option:nth-child(2)').text() == 'deuxième'
assert resp.pyquery('option:nth-child(3)').text() == 'deuxième'
resp.form['f1'] = 'test'
resp.form['f2'] = 'second'

View File

@ -886,9 +886,9 @@ class WidgetField(Field):
kwargs[k] = getattr(self, k)
self.perform_more_widget_changes(form, kwargs)
if self.hint and self.hint.startswith('<'):
hint = htmltext(self.hint)
hint = htmltext(get_publisher().translate(self.hint))
else:
hint = self.hint
hint = get_publisher().translate(self.hint or '')
form.add(self.widget_class, 'f%s' % self.id, title=self.label, hint=hint, **kwargs)
widget = form.get_widget('f%s' % self.id)
widget.field = self