That would work, but this causes another problem because I'm using the
required attribute to decorate the HTML.
Martin Grigorov (2012-04-10 10:36):
On Tue, Apr 10, 2012 at 10:33 AM, Christoph Leiter
<[email protected]> wrote:
Sorry, I think I didn't make myself clear enough. I don't want to translate
just the "Required" key for several languages.
What I do is that I have several language specific text fields on the same
page, e.g. new LangTextField("name", model, Language.ENGLISH), new
LangTextField("name", model, Language.GERMAN). The user can enter the "name"
field in many languages with the different LangTextFields. (This is the
backend area. The user enters the texts in many languages and on the
frontend the text in the correct language gets displayed.) Based on the
language attribute of the text field a more specific "Required" key should
be provided.
The English properties files would look like:
RequiredEN=Please enter the field ${label} in English
RequiredDE=Please enter the field ${label} in German
For German:
RequiredEN=Bitte fuellen Sie das Feld ${label} in Englisch aus
RequiredDE=Bitte fuellen Sie das Feld ${label} in Deutsch aus
I don't think that can easily be achieved without overriding
reportRequiredError() (or the hack I described).
Or by using your own custom IValidator instead of using
FormComponent#setRequired(true).
Christoph
Martin Grigorov (2012-04-10 09:40):
Hi,
The current impl of this method is just: error(new
ValidationError().addKey("Required"));
I.e. it just adds an error for this field and later the i18n mechanics
will use 'Required' as a key to find the actual message in the
resource bundles.
So you can provide several bundles for the different languages and
provide custom value for this key.
On Fri, Apr 6, 2012 at 12:37 PM, Christoph Leiter
<[email protected]> wrote:
Hi,
currently FormComponent#reportRequiredError() is a private method. Could
it
be made protected to allow users to override the default implementation?
My use case is that I have a custom implementation of TextField that is
language specific. Instead of showing the user "Field X is required" I
want
to display "Field X in language L is required". Currently I have to
override
FormComponent#validate() and inline validateRequired() there just to be
able
to provide my own implementation of reportRequiredError(), which is quite
cumbersome and brittle.
But if there's another, better solution, which doesn't need to make the
method protected, I'd be happy to hear it as well.
Thanks
Christoph