You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@wicket.apache.org by Christian Schröter <ch...@1und1.de> on 2015/01/26 11:01:47 UTC
Internationalized Validators
Hey,
I would be interested to know if there is a builtin mechanism to add specific validators for a certain locale.
For example:
de_DE -> StringValidator.maximumLength(100)
en_GB -> StringValidator.maximumLength(200);
en_US -> StringValidator.maximumLength(200);
& AnotherValidatorOnlyForUS();
My current solution is a switch-case over the locale to add the correct validators.
With more locales and more validators this solution feels kind of sloppy.
What does your solution looks like?
Cheers,
Chris
Re: Internationalized Validators
Posted by Tobias Soloschenko <to...@googlemail.com>.
Hi,
you could switch the locale of the session
http://ci.apache.org/projects/wicket/apidocs/6.0.x/org/apache/wicket/protocol/http/WebSession.html
setLocale(Locale locale)
Here is an example in which the locale is switched by a link click:
https://cwiki.apache.org/confluence/display/WICKET/Manually+switching+locale
For normal the locale is resolved by the preferred language of the browser.
You may switch the locale based on the market which is currently displayed.
I don't know if it is possible to switch the locale of a component Hierarchy.
Here the link to the user guide for i18n:
http://wicket.apache.org/guide/guide/i18n.html
kind regards
Tobias
> Am 27.01.2015 um 07:38 schrieb Christian Schröter <ch...@1und1.de>:
>
>
> Thank you Tobias,
>
> but this will unfortunately just solve the problem having the same validator with different parameters. To add a market specific validator, I still would need to switch case the locale.
>
> Any other ideas?
>
>> Hi,
>>
>> you could place the values in the locale file and parse them.
>>
>> Integer.parseInt(getString("maxvalue"));
>>
>> kind regards
>>
>> Tobias
>>
>>> Am 26.01.2015 um 11:01 schrieb Christian Schröter <ch...@1und1.de>:
>>>
>>> Hey,
>>>
>>> I would be interested to know if there is a builtin mechanism to add specific validators for a certain locale.
>>>
>>> For example:
>>>
>>> de_DE -> StringValidator.maximumLength(100)
>>> en_GB -> StringValidator.maximumLength(200);
>>> en_US -> StringValidator.maximumLength(200);
>>> & AnotherValidatorOnlyForUS();
>>>
>>> My current solution is a switch-case over the locale to add the correct validators.
>>> With more locales and more validators this solution feels kind of sloppy.
>>>
>>> What does your solution looks like?
>>>
>>>
>>> Cheers,
>>> Chris
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
>> For additional commands, e-mail: users-help@wicket.apache.org
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
> For additional commands, e-mail: users-help@wicket.apache.org
>
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
For additional commands, e-mail: users-help@wicket.apache.org
Re: Internationalized Validators
Posted by Martin Grigorov <mg...@apache.org>.
Hi,
I don't see any better way.
Either you use a simple switch statement or a special factory class it is
almost the same - you have to keep it up-to-date with the list of supported
locales/markets.
Martin Grigorov
Wicket Training and Consulting
https://twitter.com/mtgrigorov
On Tue, Jan 27, 2015 at 8:38 AM, Christian Schröter <
christian.schroeter@1und1.de> wrote:
>
> Thank you Tobias,
>
> but this will unfortunately just solve the problem having the same
> validator with different parameters. To add a market specific validator, I
> still would need to switch case the locale.
>
> Any other ideas?
>
> > Hi,
> >
> > you could place the values in the locale file and parse them.
> >
> > Integer.parseInt(getString("maxvalue"));
> >
> > kind regards
> >
> > Tobias
> >
> >> Am 26.01.2015 um 11:01 schrieb Christian Schröter <
> christian.schroeter@1und1.de>:
> >>
> >> Hey,
> >>
> >> I would be interested to know if there is a builtin mechanism to add
> specific validators for a certain locale.
> >>
> >> For example:
> >>
> >> de_DE -> StringValidator.maximumLength(100)
> >> en_GB -> StringValidator.maximumLength(200);
> >> en_US -> StringValidator.maximumLength(200);
> >> & AnotherValidatorOnlyForUS();
> >>
> >> My current solution is a switch-case over the locale to add the correct
> validators.
> >> With more locales and more validators this solution feels kind of
> sloppy.
> >>
> >> What does your solution looks like?
> >>
> >>
> >> Cheers,
> >> Chris
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
> > For additional commands, e-mail: users-help@wicket.apache.org
> >
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
> For additional commands, e-mail: users-help@wicket.apache.org
>
>
Re: Internationalized Validators
Posted by Martin Grigorov <mg...@apache.org>.
Yes! This will make the component tree a bit heavier but it would
definitely simplify the code!
Martin Grigorov
Wicket Training and Consulting
https://twitter.com/mtgrigorov
On Tue, Jan 27, 2015 at 10:02 AM, Tobias Soloschenko <
tobiassoloschenko@googlemail.com> wrote:
> You could apply the validator without any switch and build in a check
> which receives the Session Locale and only apply the validation if the
> locale is en_US
>
> kind regards
>
> Tobias
>
> > Am 27.01.2015 um 08:40 schrieb Martin Grigorov <mg...@apache.org>:
> >
> > On Tue, Jan 27, 2015 at 9:16 AM, Tobias Soloschenko <
> > tobiassoloschenko@googlemail.com> wrote:
> >
> >> Ah, just one addition: No you would not require to switch the parameter,
> >> because the parameter would remain the same - in the property files it
> >> would look like this:
> >>
> >> Propertyfile for en_GB:
> >>
> >> maxvalue=200
> >>
> >> Propertyfile for de_DE:
> >>
> >> maxvalue=100
> >>
> >> in the code you would receive the max value based on the current locale
> >> "getString("maxvalue")"
> >>
> >
> > This will work if the app code uses the same type of validator with
> > different arguments, but it won't work if for some locales/markets it has
> > to use a completely different validator (like AnotherValidatorOnlyForUS).
> > But yes, it would simplify the "switch"!
> >
> >
> >>
> >> kind regards
> >>
> >> Tobias
> >>
> >>> Am 27.01.2015 um 07:38 schrieb Christian Schröter <
> >> christian.schroeter@1und1.de>:
> >>>
> >>>
> >>> Thank you Tobias,
> >>>
> >>> but this will unfortunately just solve the problem having the same
> >> validator with different parameters. To add a market specific
> validator, I
> >> still would need to switch case the locale.
> >>>
> >>> Any other ideas?
> >>>
> >>>> Hi,
> >>>>
> >>>> you could place the values in the locale file and parse them.
> >>>>
> >>>> Integer.parseInt(getString("maxvalue"));
> >>>>
> >>>> kind regards
> >>>>
> >>>> Tobias
> >>>>
> >>>>> Am 26.01.2015 um 11:01 schrieb Christian Schröter <
> >> christian.schroeter@1und1.de>:
> >>>>>
> >>>>> Hey,
> >>>>>
> >>>>> I would be interested to know if there is a builtin mechanism to add
> >> specific validators for a certain locale.
> >>>>>
> >>>>> For example:
> >>>>>
> >>>>> de_DE -> StringValidator.maximumLength(100)
> >>>>> en_GB -> StringValidator.maximumLength(200);
> >>>>> en_US -> StringValidator.maximumLength(200);
> >>>>> & AnotherValidatorOnlyForUS();
> >>>>>
> >>>>> My current solution is a switch-case over the locale to add the
> >> correct validators.
> >>>>> With more locales and more validators this solution feels kind of
> >> sloppy.
> >>>>>
> >>>>> What does your solution looks like?
> >>>>>
> >>>>>
> >>>>> Cheers,
> >>>>> Chris
> >>>>
> >>>> ---------------------------------------------------------------------
> >>>> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
> >>>> For additional commands, e-mail: users-help@wicket.apache.org
> >>>
> >>>
> >>> ---------------------------------------------------------------------
> >>> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
> >>> For additional commands, e-mail: users-help@wicket.apache.org
> >>>
> >>
> >> ---------------------------------------------------------------------
> >> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
> >> For additional commands, e-mail: users-help@wicket.apache.org
> >>
> >>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
> For additional commands, e-mail: users-help@wicket.apache.org
>
>
Re: Internationalized Validators
Posted by Tobias Soloschenko <to...@googlemail.com>.
You could apply the validator without any switch and build in a check which receives the Session Locale and only apply the validation if the locale is en_US
kind regards
Tobias
> Am 27.01.2015 um 08:40 schrieb Martin Grigorov <mg...@apache.org>:
>
> On Tue, Jan 27, 2015 at 9:16 AM, Tobias Soloschenko <
> tobiassoloschenko@googlemail.com> wrote:
>
>> Ah, just one addition: No you would not require to switch the parameter,
>> because the parameter would remain the same - in the property files it
>> would look like this:
>>
>> Propertyfile for en_GB:
>>
>> maxvalue=200
>>
>> Propertyfile for de_DE:
>>
>> maxvalue=100
>>
>> in the code you would receive the max value based on the current locale
>> "getString("maxvalue")"
>>
>
> This will work if the app code uses the same type of validator with
> different arguments, but it won't work if for some locales/markets it has
> to use a completely different validator (like AnotherValidatorOnlyForUS).
> But yes, it would simplify the "switch"!
>
>
>>
>> kind regards
>>
>> Tobias
>>
>>> Am 27.01.2015 um 07:38 schrieb Christian Schröter <
>> christian.schroeter@1und1.de>:
>>>
>>>
>>> Thank you Tobias,
>>>
>>> but this will unfortunately just solve the problem having the same
>> validator with different parameters. To add a market specific validator, I
>> still would need to switch case the locale.
>>>
>>> Any other ideas?
>>>
>>>> Hi,
>>>>
>>>> you could place the values in the locale file and parse them.
>>>>
>>>> Integer.parseInt(getString("maxvalue"));
>>>>
>>>> kind regards
>>>>
>>>> Tobias
>>>>
>>>>> Am 26.01.2015 um 11:01 schrieb Christian Schröter <
>> christian.schroeter@1und1.de>:
>>>>>
>>>>> Hey,
>>>>>
>>>>> I would be interested to know if there is a builtin mechanism to add
>> specific validators for a certain locale.
>>>>>
>>>>> For example:
>>>>>
>>>>> de_DE -> StringValidator.maximumLength(100)
>>>>> en_GB -> StringValidator.maximumLength(200);
>>>>> en_US -> StringValidator.maximumLength(200);
>>>>> & AnotherValidatorOnlyForUS();
>>>>>
>>>>> My current solution is a switch-case over the locale to add the
>> correct validators.
>>>>> With more locales and more validators this solution feels kind of
>> sloppy.
>>>>>
>>>>> What does your solution looks like?
>>>>>
>>>>>
>>>>> Cheers,
>>>>> Chris
>>>>
>>>> ---------------------------------------------------------------------
>>>> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
>>>> For additional commands, e-mail: users-help@wicket.apache.org
>>>
>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
>>> For additional commands, e-mail: users-help@wicket.apache.org
>>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
>> For additional commands, e-mail: users-help@wicket.apache.org
>>
>>
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
For additional commands, e-mail: users-help@wicket.apache.org
Re: Internationalized Validators
Posted by Martin Grigorov <mg...@apache.org>.
On Tue, Jan 27, 2015 at 9:16 AM, Tobias Soloschenko <
tobiassoloschenko@googlemail.com> wrote:
> Ah, just one addition: No you would not require to switch the parameter,
> because the parameter would remain the same - in the property files it
> would look like this:
>
> Propertyfile for en_GB:
>
> maxvalue=200
>
> Propertyfile for de_DE:
>
> maxvalue=100
>
> in the code you would receive the max value based on the current locale
> "getString("maxvalue")"
>
This will work if the app code uses the same type of validator with
different arguments, but it won't work if for some locales/markets it has
to use a completely different validator (like AnotherValidatorOnlyForUS).
But yes, it would simplify the "switch"!
>
> kind regards
>
> Tobias
>
> > Am 27.01.2015 um 07:38 schrieb Christian Schröter <
> christian.schroeter@1und1.de>:
> >
> >
> > Thank you Tobias,
> >
> > but this will unfortunately just solve the problem having the same
> validator with different parameters. To add a market specific validator, I
> still would need to switch case the locale.
> >
> > Any other ideas?
> >
> >> Hi,
> >>
> >> you could place the values in the locale file and parse them.
> >>
> >> Integer.parseInt(getString("maxvalue"));
> >>
> >> kind regards
> >>
> >> Tobias
> >>
> >>> Am 26.01.2015 um 11:01 schrieb Christian Schröter <
> christian.schroeter@1und1.de>:
> >>>
> >>> Hey,
> >>>
> >>> I would be interested to know if there is a builtin mechanism to add
> specific validators for a certain locale.
> >>>
> >>> For example:
> >>>
> >>> de_DE -> StringValidator.maximumLength(100)
> >>> en_GB -> StringValidator.maximumLength(200);
> >>> en_US -> StringValidator.maximumLength(200);
> >>> & AnotherValidatorOnlyForUS();
> >>>
> >>> My current solution is a switch-case over the locale to add the
> correct validators.
> >>> With more locales and more validators this solution feels kind of
> sloppy.
> >>>
> >>> What does your solution looks like?
> >>>
> >>>
> >>> Cheers,
> >>> Chris
> >>
> >> ---------------------------------------------------------------------
> >> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
> >> For additional commands, e-mail: users-help@wicket.apache.org
> >
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
> > For additional commands, e-mail: users-help@wicket.apache.org
> >
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
> For additional commands, e-mail: users-help@wicket.apache.org
>
>
Re: Internationalized Validators
Posted by Tobias Soloschenko <to...@googlemail.com>.
Ah, just one addition: No you would not require to switch the parameter, because the parameter would remain the same - in the property files it would look like this:
Propertyfile for en_GB:
maxvalue=200
Propertyfile for de_DE:
maxvalue=100
in the code you would receive the max value based on the current locale "getString("maxvalue")"
kind regards
Tobias
> Am 27.01.2015 um 07:38 schrieb Christian Schröter <ch...@1und1.de>:
>
>
> Thank you Tobias,
>
> but this will unfortunately just solve the problem having the same validator with different parameters. To add a market specific validator, I still would need to switch case the locale.
>
> Any other ideas?
>
>> Hi,
>>
>> you could place the values in the locale file and parse them.
>>
>> Integer.parseInt(getString("maxvalue"));
>>
>> kind regards
>>
>> Tobias
>>
>>> Am 26.01.2015 um 11:01 schrieb Christian Schröter <ch...@1und1.de>:
>>>
>>> Hey,
>>>
>>> I would be interested to know if there is a builtin mechanism to add specific validators for a certain locale.
>>>
>>> For example:
>>>
>>> de_DE -> StringValidator.maximumLength(100)
>>> en_GB -> StringValidator.maximumLength(200);
>>> en_US -> StringValidator.maximumLength(200);
>>> & AnotherValidatorOnlyForUS();
>>>
>>> My current solution is a switch-case over the locale to add the correct validators.
>>> With more locales and more validators this solution feels kind of sloppy.
>>>
>>> What does your solution looks like?
>>>
>>>
>>> Cheers,
>>> Chris
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
>> For additional commands, e-mail: users-help@wicket.apache.org
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
> For additional commands, e-mail: users-help@wicket.apache.org
>
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
For additional commands, e-mail: users-help@wicket.apache.org
Re: Internationalized Validators
Posted by Christian Schröter <ch...@1und1.de>.
Thank you Tobias,
but this will unfortunately just solve the problem having the same validator with different parameters. To add a market specific validator, I still would need to switch case the locale.
Any other ideas?
> Hi,
>
> you could place the values in the locale file and parse them.
>
> Integer.parseInt(getString("maxvalue"));
>
> kind regards
>
> Tobias
>
>> Am 26.01.2015 um 11:01 schrieb Christian Schröter <ch...@1und1.de>:
>>
>> Hey,
>>
>> I would be interested to know if there is a builtin mechanism to add specific validators for a certain locale.
>>
>> For example:
>>
>> de_DE -> StringValidator.maximumLength(100)
>> en_GB -> StringValidator.maximumLength(200);
>> en_US -> StringValidator.maximumLength(200);
>> & AnotherValidatorOnlyForUS();
>>
>> My current solution is a switch-case over the locale to add the correct validators.
>> With more locales and more validators this solution feels kind of sloppy.
>>
>> What does your solution looks like?
>>
>>
>> Cheers,
>> Chris
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
> For additional commands, e-mail: users-help@wicket.apache.org
>
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
For additional commands, e-mail: users-help@wicket.apache.org
Re: Internationalized Validators
Posted by Tobias Soloschenko <to...@googlemail.com>.
Hi,
you could place the values in the locale file and parse them.
Integer.parseInt(getString("maxvalue"));
kind regards
Tobias
> Am 26.01.2015 um 11:01 schrieb Christian Schröter <ch...@1und1.de>:
>
> Hey,
>
> I would be interested to know if there is a builtin mechanism to add specific validators for a certain locale.
>
> For example:
>
> de_DE -> StringValidator.maximumLength(100)
> en_GB -> StringValidator.maximumLength(200);
> en_US -> StringValidator.maximumLength(200);
> & AnotherValidatorOnlyForUS();
>
> My current solution is a switch-case over the locale to add the correct validators.
> With more locales and more validators this solution feels kind of sloppy.
>
> What does your solution looks like?
>
>
> Cheers,
> Chris
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
For additional commands, e-mail: users-help@wicket.apache.org