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 = FormDef()
formdef.name = 'test form' formdef.name = 'test form'
formdef.fields = [ formdef.fields = [
StringField(id='1', label='text field ', type='string'), # check strip() # label has a trailing white space to check for strip()
ItemField(id='2', label='list field', type='item', items=['first', 'second', 'third']), 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.workflow = workflow
formdef.store() formdef.store()
@ -109,6 +116,8 @@ def test_i18n_form(pub, user, emails, http_requests):
('Mail Body', 'Contenu du courriel'), ('Mail Body', 'Contenu du courriel'),
('Notification Title', 'Titre de notification'), ('Notification Title', 'Titre de notification'),
('Notification Body', 'Contenu 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 = TranslatableMessage()
msg.string = en 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') app = login(get_app(pub), username='foo', password='foo')
resp = app.get(formdef.get_url()) resp = app.get(formdef.get_url())
assert resp.pyquery('#form_label_f1').text() == 'text field *' 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'}) resp = app.get(formdef.get_url(), headers={'Accept-Language': 'fr'})
assert resp.pyquery('#form_label_f1').text() == 'champ texte*' 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'}) 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('h1').text() == 'formulaire test'
assert resp.pyquery('#form_label_f1').text() == 'champ texte*' 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['f1'] = 'test'
resp.form['f2'] = 'second' resp.form['f2'] = 'second'

View File

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