Hi Rob, maybe we could name it KeyReplacingLocalizer.
Here is the reference of the ReplacingResourceModel. It wasn't in html5 submodule but in minis. https://github.com/wicketstuff/core/blob/85bfa1b4bf67261ad4a7b07295c366c49733ad1f/jdk-1.7-parent/minis-parent/minis/src/main/java/org/wicketstuff/minis/model/ReplacingResourceModel.java The pattern is like this: private static final Pattern PLACEHOLDER_PATTERN = Pattern.compile("\\$\\ {(.*?)\\}"); kind regards Tobias 2015-03-04 9:57 GMT+01:00 Rob Sonke <[email protected]>: > Agree Martin, thanks for the tips (also Tobias). I'll look into an > implementation of an extra Localizer, good names are welcome, and file a > ticket. > > Rob > > On Wed, Mar 4, 2015 at 9:46 AM, Martin Grigorov <[email protected]> > wrote: > > > Hi, > > > > Since there were no many requests for this functionality I'd prefer if we > > use a specialization of Localizer as Rob did. > > The Pattern compilation is the slower operation, so it should be a static > > final field. The matching is usually fast so maybe there is no problem to > > put it directly in Localizer. But I don't see why to do it if there are > > just few users of this functionality. > > > > Please file a ticket! > > Preferably with a patch/PR and some tests! > > > > Thanks! > > > > Martin Grigorov > > Wicket Training and Consulting > > https://twitter.com/mtgrigorov > > > > On Wed, Mar 4, 2015 at 10:25 AM, Tobias Soloschenko < > > [email protected]> wrote: > > > > > Hi, > > > > > > maybe we can provide a new Localizer or change the existing default > > > implementation. As far as I know the StringResourceModel uses the same > > > Syntax for replacing which might lead to errors > > > > > > @others: What do you think? > > > > > > @Rob: the pattern should be modified a bit so that it is not greedy > (.*?) > > > - have a look in WicketStuff / submodul html5 - there is a class > > > ReplacingResourceModel - the pattern you find there is a better one. > > > > > > kind regards > > > > > > Tobias > > > > > > > Am 04.03.2015 um 09:09 schrieb Rob Sonke <[email protected]>: > > > > > > > > Hi, > > > > > > > > It took a while to dive into this but I wrote a simple solution based > > on > > > > the pattern/matcher example of Tobias and this seems to work well. It > > > only > > > > wraps the default Localizer class in Wicket by overriding the > getString > > > > method: > > > > > > > > getResourceSettings().setLocalizer(new Localizer() > > > > > > > > { > > > > > > > > public String getString(final String key, final Component component, > > > > final IModel<?> model, final Locale locale, final String style, final > > > > IModel<String> defaultValue) throws MissingResourceException > > > > > > > > { > > > > > > > > String value = super.getString(key, component, model, locale, > style, > > > > defaultValue); > > > > > > > > StringBuffer output = new StringBuffer(); > > > > > > > > final Pattern PLACEHOLDER_PATTERN = > > Pattern.compile("\\$\\{(.*)\\}"); > > > > > > > > Matcher matcher = PLACEHOLDER_PATTERN.matcher(value); > > > > > > > > > > > > // Search for other nested keys to replace > > > > > > > > while (matcher.find()) > > > > > > > > { > > > > > > > > String replacedPlaceHolder = getString(matcher.group(1), > > component, > > > > model, locale, style, (String)null); > > > > > > > > matcher.appendReplacement(output, replacedPlaceHolder); > > > > > > > > } > > > > > > > > matcher.appendTail(output); > > > > > > > > return output.toString(); > > > > > > > > } > > > > > > > > }); > > > > > > > > > > > > Any need for putting this in Wicket? Or maybe somebody has better > > options > > > > how to do this. I'm all ears but I'm already happy that I could > > implement > > > > this anyway without patching the Wicket source. > > > > > > > > > > > > Rob > > > > > > > > On Sat, Feb 21, 2015 at 6:14 PM, Tobias Soloschenko < > > > > [email protected]> wrote: > > > > > > > >> Hi, > > > >> > > > >> if it gained not as much interest in the community, but there are > > still > > > >> some users asking for such an implementation - maybe we can put it > > into > > > >> wicketstuff-minis? > > > >> > > > >> kind regards > > > >> > > > >> Tobias > > > >> > > > >> P.S.: I also answered the question in stackoverflow. :-) > > > >> > > > >> Am 21.02.15 um 17:59 schrieb Sven Meier: > > > >> > > > >> Hi, > > > >>> > > > >>> such a feature was asked a few times, e.g.: > > > >>> > > > >>> http://stackoverflow.com/questions/16684200/refer-to- > > > >>> one-property-from-another > > > >>> > > > >>> But apparently it never gained much interest in the community. In > my > > > >>> experience you won't find many cases where this is useful anyway. > > > >>> > > > >>> Have fun > > > >>> Sven > > > >>> > > > >>> > > > >>>> On 21.02.2015 16:51, Tobias Soloschenko wrote: > > > >>>> > > > >>>> Rob, > > > >>>> > > > >>>> we will see what others say and if there is a standard way for > this > > in > > > >>>> wicket. I'm currently testing the implementation - it also > replaces > > > keys > > > >>>> found in hierarchy, because Wickets Localizer is going to be used > > for > > > each > > > >>>> key which is going to be replaced. So the example of your first > mail > > > is > > > >>>> also covered. > > > >>>> > > > >>>> kind regards > > > >>>> > > > >>>> Tobias > > > >>>> > > > >>>>> Am 21.02.15 um 16:37 schrieb Rob Sonke: > > > >>>>> > > > >>>>> Tobias, > > > >>>>> > > > >>>>> Somehow I'm missing your replies in gmail. But thanks for the > > > >>>>> suggestions. > > > >>>>> Using custom models would be a last resort for me. Because I will > > > have > > > >>>>> to > > > >>>>> replace all occurences. I'm somehow hoping to hook into the > > > localizer. > > > >>>>> > > > >>>>> On Sat, Feb 21, 2015 at 2:01 PM, Rob Sonke <[email protected]> > wrote: > > > >>>>> > > > >>>>> Hi all, > > > >>>>>> > > > >>>>>> I'm trying to achieve a fairly simple thing within .properties > > > files to > > > >>>>>> avoid a lot of duplicate words through different files. > > > >>>>>> > > > >>>>>> For example there's is a HomePage.properties with: > > > >>>>>> lbl.foo=This is an example text, we love ${lbl.item} > > > >>>>>> > > > >>>>>> And then in MyWebApplication.properties: > > > >>>>>> lbl.item=Wicket > > > >>>>>> > > > >>>>>> But as far as I can see, Wicket tries to resolve the parameters > > with > > > >>>>>> objects passed to eg StringResourceModel. How can I hook into > this > > > and > > > >>>>>> solve this in a nice way? > > > >>>>>> > > > >>>>>> Kind regards, > > > >>>>>> Rob > > > >>>> > > > >>>> > > --------------------------------------------------------------------- > > > >>>> To unsubscribe, e-mail: [email protected] > > > >>>> For additional commands, e-mail: [email protected] > > > >>> > > > >>> > --------------------------------------------------------------------- > > > >>> To unsubscribe, e-mail: [email protected] > > > >>> For additional commands, e-mail: [email protected] > > > >> > > > >> > --------------------------------------------------------------------- > > > >> To unsubscribe, e-mail: [email protected] > > > >> For additional commands, e-mail: [email protected] > > > >> > > > >> > > > > > > --------------------------------------------------------------------- > > > To unsubscribe, e-mail: [email protected] > > > For additional commands, e-mail: [email protected] > > > > > > > > >
