Sure, thanks! -Bruno
2008/7/4 Adrian Crum <[EMAIL PROTECTED]>: > The same thing can be accomplished without the ?interpret add-on. > > Wait a little while longer on this - I am looking through the FreeMarker > code trying to find a better way. > > -Adrian > > > --- On Fri, 7/4/08, Bruno Busco <[EMAIL PROTECTED]> wrote: > > > From: Bruno Busco <[EMAIL PROTECTED]> > > Subject: Re: How to include parameters into UiLabels strings? > > To: dev@ofbiz.apache.org > > Date: Friday, July 4, 2008, 1:34 PM > > Googling around I found this: > > http://lists.ofbiz.org/pipermail/dev/2003-November/003762.html > > > > so in the .FTL I have used the following: > > <div><#assign > > > ProductOnlyShowingFirstN=uiLabelMap.ProductOnlyShowingFirstN?interpret><@ProductOnlyShowingFirstN/>.</div> > > > > and so doing it is not necessary to change the screens XML > > files to insert > > the <set> tag. > > If there are no objections it could still be "the way > > to go" > > > > Thank you, > > -Bruno > > > > > > 2008/7/4 Adrian Crum <[EMAIL PROTECTED]>: > > > > > Doing so would require a change to the Freemarker > > code. It would be worth > > > looking into. > > > > > > -Adrian > > > > > > > > > BJ Freeman wrote: > > > > > >> wouldn't be easier to change the rendering > > code > > >> instead of doing this for every line that has > > split labels with variables. > > >> just seems more of a quick fix but not a > > solution\ > > >> > > >> > > >> Adrian Crum sent the following on 7/3/2008 12:42 > > PM: > > >> > > >>> Keep it simple: > > >>> > > >>> <set > > field="ProductOnlyShowingFirstN" > > >>> > > value="${uiLabelMap.ProductOnlyShowingFirstN}"/> > > >>> > > >>> and > > >>> > > >>> ${ProductOnlyShowingFirstN} > > >>> > > >>> -Adrian > > >>> > > >>> Bruno Busco wrote: > > >>> > > >>>> Adrian, > > >>>> yes I did read your solution and now I > > have also tested and solved the > > >>>> problem. > > >>>> Thank you. > > >>>> > > >>>> BTW, since this is something that will > > happen more than once (above > > >>>> all if > > >>>> we replace some splitted english-ordered > > sentences with a whole label) > > >>>> I ask > > >>>> for a best practice to do it. > > >>>> I propose the one that I have implemented > > right now as following: > > >>>> > > >>>> In order to display the following UILabel: > > >>>> <property > > key="ProductOnlyShowingFirstN"> > > >>>> <value > > xml:lang="en">NOTE: Only showing the first > > ${viewSize} of > > >>>> ${listSize} products. To view the rest, > > use the Products tab for this > > >>>> category.</value> > > >>>> <value > > xml:lang="it">NOTA: Sono elencati solo > > ${viewSize} di > > >>>> ${listSize} > > >>>> prodotti. Per visualizzare gli altri, usa > > il pannello Prodotti di questa > > >>>> categoria.</value> > > >>>> </property> > > >>>> > > >>>> I have used the following line in the > > actions tag: > > >>>> <set > > field="uiLabelMap_ProductOnlyShowingFirstN" > > >>>> > > value="${uiLabelMap.ProductOnlyShowingFirstN}"/> > > >>>> > > >>>> and the following line in the .FTL file > > >>>> ${uiLabelMap_ProductOnlyShowingFirstN} > > >>>> > > >>>> > > >>>> So the guideline could be that the field > > used has the same name has the > > >>>> UiLabel except the "." replaced > > by the "_" > > >>>> > > >>>> Does this make sense? > > >>>> > > >>>> Thank you, > > >>>> Bruno > > >>>> > > >>>> P.S. > > >>>> To implement this it has been necessary to > > change the screen xml file > > >>>> and > > >>>> the ftl file. > > >>>> I also tried to use the #assign tag in > > order to have this local to the > > >>>> .FTL > > >>>> file with the following lines: > > >>>> > > >>>> <#assign > > uiLabelMap_ProductOnlyShowingFirstN = > > >>>> uiLabelMap.ProductOnlyShowingFirstN> > > >>>> > > <div>${uiLabelMap_ProductOnlyShowingFirstN}.</div> > > >>>> > > >>>> but this does not work :-( > > >>>> There are no way to make this work? > > >>>> > > >>>> 2008/7/3 BJ Freeman > > <[EMAIL PROTECTED]>: > > >>>> > > >>>> Ok sorry now it makes sense. > > >>>>> my languages are limited but like in > > spanish the sentence structure is > > >>>>> different than english so the > > placement of the variables would be > > >>>>> different. > > >>>>> > > >>>>> so the approach have the $() in the > > uilabels files is what you are > > >>>>> suggesting. > > >>>>> > > >>>>> Bruno Busco sent the following on > > 7/3/2008 1:15 AM: > > >>>>> > > >>>>>> So the only solution is to split > > the strings and have the ${} into the > > >>>>>> > > >>>>> ftl ? > > >>>>> > > >>>>>> It is not the case to think to > > implement an iterative strings > > >>>>>> rendering > > >>>>>> until no more ${} are found? > > >>>>>> (this is why I used dev ml) > > >>>>>> > > >>>>>> This would also solve the issue > > that splitting the sentence in several > > >>>>>> labels it is necessary to stick to > > english words order that > > >>>>>> generally is > > >>>>>> different from other languages. > > >>>>>> > > >>>>>> Thank you > > >>>>>> -Bruno > > >>>>>> > > >>>>>> 2008/7/3 BJ Freeman > > <[EMAIL PROTECTED]>: > > >>>>>> > > >>>>>> probably should be in user ml > > >>>>>>> use > > >>>>>>> uiLabelMap.yourstringid > > >>>>>>> then move the text to > > >>>>>>> config/name of > > fileUiLabels.xml > > >>>>>>> > > >>>>>>> take a look at > > CatalogCommonScreens.xml for where you may find the > > >>>>>>> UiLabels.xml files like > > >>>>>>> <property-map > > resource="ProductUiLabels" > > >>>>>>> > > map-name="uiLabelMap" > > global="true"/> > > >>>>>>> <property-map > > resource="CommonUiLabels" > > >>>>>>> > > map-name="uiLabelMap" > > global="true"/> > > >>>>>>> > > >>>>>>> note you will have to break it > > up so the $() stay in the ftl, i > > >>>>>>> believe. > > >>>>>>> > > >>>>>>> > > >>>>>>> Bruno Busco sent the following > > on 7/2/2008 11:15 PM: > > >>>>>>> > > >>>>>>>> Thank you very much for > > your suggestions, I have been able to answer > > >>>>>>>> > > >>>>>>> you > > >>>>> > > >>>>>> only now... > > >>>>>>>> > > >>>>>>>> The issue, i think, is not > > related to the availability of the > > >>>>>>>> > > >>>>>>> information > > >>>>> > > >>>>>> in > > >>>>>>> > > >>>>>>>> the context, the two > > variables are already defined in the context. > > >>>>>>>> The > > >>>>>>>> problem I have is that the > > UI label rendering should do a "double > > >>>>>>>> > > >>>>>>> rendering" > > >>>>>>> > > >>>>>>>> and it seems not to do so. > > >>>>>>>> > > >>>>>>>> I try to better explain > > (sorry for the message length). > > >>>>>>>> > > >>>>>>>> I am working on the file > > >>>>>>>> > > \applications\product\webapp\catalog\find\miniproductlist.ftl. > > At > > >>>>>>>> lines > > >>>>>>>> 46-50 of this file there > > is the following: > > >>>>>>>> <#if > > (listSize > viewSize)> > > >>>>>>>> > > <div> > > >>>>>>>> > > <div>NOTE: Only showing the first ${viewSize} of > > >>>>>>>> ${listSize} products. To > > view the rest, use the Products tab for > > >>>>>>>> this > > >>>>>>>> category.</div> > > >>>>>>>> > > </div> > > >>>>>>>> </#if> > > >>>>>>>> > > >>>>>>>> The viewSize and listSize > > variables are correctly rendered since > > >>>>>>>> they > > >>>>>>>> > > >>>>>>> are > > >>>>> > > >>>>>> correctly defined in the context > > by the miniproductlist.groovy > > >>>>>>>> script. > > >>>>>>>> The problem is that this > > string is english only and I would like to > > >>>>>>>> transform in a standard > > UiLabel, so I added the following in the > > >>>>>>>> ProductUiLabels.xml file: > > >>>>>>>> > > >>>>>>>> <property > > key="ProductOnlyShowingFirstN"> > > >>>>>>>> <value > > xml:lang="en">NOTE: Only showing the first > > ${viewSize} > > >>>>>>>> > > >>>>>>> of > > >>>>> > > >>>>>> ${listSize} products. To view the > > rest, use the Products tab for this > > >>>>>>>> category.</value> > > >>>>>>>> <value > > xml:lang="it">NOTA: Sono elencati solo > > ${viewSize} di > > >>>>>>>> ${listSize} prodotti. Per > > visualizzare gli altri, usa il pannello > > >>>>>>>> > > >>>>>>> Prodotti > > >>>>>>> > > >>>>>>>> di questa > > categoria.</value> > > >>>>>>>> </property> > > >>>>>>>> > > >>>>>>>> and replaced the above > > lines in the miniproductlist.ftl file with > > >>>>>>>> the > > >>>>>>>> following: > > >>>>>>>> > > >>>>>>>> <#if > > (listSize > viewSize)> > > >>>>>>>> > > <div> > > >>>>>>>> > > <div>${uiLabelMap.ProductOnlyShowingFirstN}</div> > > >>>>>>>> > > </div> > > >>>>>>>> </#if> > > >>>>>>>> > > >>>>>>>> well, in this case what I > > get on the screen is the following: > > >>>>>>>> > > >>>>>>>> NOTE: Only showing the > > first ${viewSize} of ${listSize} products. To > > >>>>>>>> > > >>>>>>> view > > >>>>> > > >>>>>> the rest, use the Products tab for > > this category. > > >>>>>>>> > > >>>>>>>> where you can see that the > > variables are not rendered even if they > > >>>>>>>> are > > >>>>>>>> defined in the context. > > >>>>>>>> > > >>>>>>>> In my opinion a cyclic > > rendering should be done on the string > > >>>>>>>> until no > > >>>>>>>> > > >>>>>>> more > > >>>>>>> > > >>>>>>>> ${} are found because all > > have been rendered. > > >>>>>>>> > > >>>>>>>> I think that this is the > > reason why in many cases labels are divided > > >>>>>>>> > > >>>>>>> into > > >>>>> > > >>>>>> several labels (sometimes of one > > word only) that are then included in > > >>>>>>>> > > >>>>>>> ftl > > >>>>> > > >>>>>> files to form the whole sentence. > > Doing this can be a workaround for > > >>>>>>>> > > >>>>>>> the > > >>>>> > > >>>>>> variables rendering (because the > > variables are not included in the > > >>>>>>>> > > >>>>>>> UiLabels > > >>>>>>> > > >>>>>>>> string but in the ftl > > directly) but we already discussed in the ML > > >>>>>>>> that > > >>>>>>>> > > >>>>>>> this > > >>>>>>> > > >>>>>>>> should be avoided because > > it imposes the english words order that is > > >>>>>>>> > > >>>>>>> often > > >>>>>>> > > >>>>>>>> different for other > > languages. > > >>>>>>>> > > >>>>>>>> Many thanks, > > >>>>>>>> -Bruno > > >>>>>>>> > > >>>>>>>> > > >>>>>>>> 2008/6/30 Ashish > > Vijaywargiya <[EMAIL PROTECTED]>: > > >>>>>>>> > > >>>>>>>> Hello Bruno, > > >>>>>>>>> > > >>>>>>>>>> Unfortunately I > > see that the parameters ${viewSize} and > > >>>>>>>>>> ${listSize} > > >>>>>>>>>> > > >>>>>>>>> are > > >>>>> > > >>>>>> not > > >>>>>>>>> > > >>>>>>>>>> rendered as > > expected but the whole string is displayed as it > > >>>>>>>>>> appears > > >>>>>>>>>> > > >>>>>>>>> in > > >>>>> > > >>>>>> the > > >>>>>>>>> > > >>>>>>>>>> UiLabel.xml file. > > >>>>>>>>>> > > >>>>>>>>> ${viewSize} and > > ${listSize} means that we should put this values in > > >>>>>>>>> > > >>>>>>>> the > > >>>>> > > >>>>>> screen context first then this > > will be available in the UiLabel.xml > > >>>>>>>>> file.Suppose you are > > preparing context in the *Screens.xml then you > > >>>>>>>>> > > >>>>>>>> should > > >>>>>>> > > >>>>>>>> write down something like > > this :- > > >>>>>>>>> > > >>>>>>>>> <set > > field="viewSize" value="2"/> > > >>>>>>>>> <set > > field="listSize" value="2"/> > > >>>>>>>>> > > >>>>>>>>> Or if you would like > > to put this values in the *.bsh file that is > > >>>>>>>>> > > >>>>>>>> included > > >>>>>>> > > >>>>>>>> in your *Screens.xml file > > then you should write down the following > > >>>>>>>>> > > >>>>>>>> code. > > >>>>> > > >>>>>> > > context.put("viewSize","2"); > > >>>>>>>>> > > context.put("listSize","2"); > > >>>>>>>>> > > >>>>>>>>> If you are keeping > > your values in the parameters then you should > > >>>>>>>>> read > > >>>>>>>>> > > >>>>>>>> the > > >>>>>>> > > >>>>>>>> values from the parameters > > map inside your UiLabel.xml file. > > >>>>>>>>> In this case you will > > read by ${parameters.viewSize} & > > >>>>>>>>> ${parameters.listSize} > > >>>>>>>>> For example :- > > >>>>>>>>> <set > > field="parameters.viewSize" > > value="2"/> > > >>>>>>>>> <set > > field="parameters.listSize" > > value="2"/> > > >>>>>>>>> > > >>>>>>>>> & while putting > > the values in *.bsh > > >>>>>>>>> > > >>>>>>>>> > > parameters.put("viewSize","2"); > > >>>>>>>>> > > parameters.put("listSize","2"); > > >>>>>>>>> > > >>>>>>>>> You should notice that > > in the screen definition all the Decorator > > >>>>>>>>> > > >>>>>>>> comes > > >>>>> > > >>>>>> after setting this context values > > and decorator includes(set) the > > >>>>>>>>> > > >>>>>>>> values > > >>>>> > > >>>>>> from Property Files.So all the > > values kept in the context(either in > > >>>>>>>>> parameters or context > > map) will be available in those *UiLabel.xml > > >>>>>>>>> > > >>>>>>>> files. > > >>>>>>> > > >>>>>>>> And for the localization > > thing I agree from the Scott's comment. > > >>>>>>>>> So I think I am safe > > on that point :-) > > >>>>>>>>> > > >>>>>>>>> Please let us know if > > you still have some more question. > > >>>>>>>>> > > >>>>>>>>> -- > > >>>>>>>>> Ashish > > >>>>>>>>> > > >>>>>>>>> > > >>>>>>>>> On Sun, Jun 29, 2008 > > at 2:25 PM, Scott Gray <[EMAIL PROTECTED]> > > >>>>>>>>> > > >>>>>>>> wrote: > > >>>>> > > >>>>>> Hi Bruno > > >>>>>>>>>> > > >>>>>>>>>> I think you're > > looking for something like this: > > >>>>>>>>>> > > UtilProperties.getMessage(resource, > > >>>>>>>>>> > > "AccountingAdditionalShippingChargeForShipment", > > >>>>>>>>>> > > UtilMisc.toMap("shipmentId", shipmentId), > > locale); > > >>>>>>>>>> > > >>>>>>>>>> Regard > > >>>>>>>>>> > > >>>>>>>>>> 2008/6/29 Bruno > > Busco <[EMAIL PROTECTED]>: > > >>>>>>>>>> > > >>>>>>>>>> Hi, > > >>>>>>>>>>> I am trying to > > add the following UiLabel that includes some > > >>>>>>>>>>> > > >>>>>>>>>> parameters > > >>>>> > > >>>>>> <property > > key="ProductOnlyShowingFirstN"> > > >>>>>>>>>>> > > <value xml:lang="en">NOTE: Only showing the > > first > > >>>>>>>>>>> ${viewSize} > > >>>>>>>>>>> > > >>>>>>>>>> of > > >>>>>>> > > >>>>>>>> ${listSize} products. To > > view the rest, use the Products tab for > > >>>>>>>>>>> > > >>>>>>>>>> this > > >>>>> > > >>>>>> category.</value> > > >>>>>>>>>>> > > <value xml:lang="it">NOTA: Sono elencati > > solo > > >>>>>>>>>>> ${viewSize} di > > >>>>>>>>>>> ${listSize} > > prodotti. Per visualizzare gli altri, usa il pannello > > >>>>>>>>>>> > > >>>>>>>>>> Prodotti > > >>>>>>>>>> > > >>>>>>>>>>> di questa > > categoria.</value> > > >>>>>>>>>>> > > </property> > > >>>>>>>>>>> > > >>>>>>>>>>> I would like > > to use it in miniproductlist.ftl to replace an > > >>>>>>>>>>> english > > >>>>>>>>>>> constant > > >>>>>>>>>>> text. > > >>>>>>>>>>> Unfortunately > > I see that the parameters ${viewSize} and > > >>>>>>>>>>> ${listSize} > > >>>>>>>>>>> > > >>>>>>>>>> are > > >>>>>>> > > >>>>>>>> not > > >>>>>>>>>> > > >>>>>>>>>>> rendered as > > expected but the whole string is displayed as it > > >>>>>>>>>>> appears > > >>>>>>>>>>> > > >>>>>>>>>> in > > >>>>>>> > > >>>>>>>> the > > >>>>>>>>>> > > >>>>>>>>>>> UiLabel.xml > > file. > > >>>>>>>>>>> > > >>>>>>>>>>> What is the > > correct way to display parametrized labels? > > >>>>>>>>>>> > > >>>>>>>>>>> Many thanks, > > >>>>>>>>>>> Bruno > > >>>>>>>>>>> > > >>>>>>>>>>> > > >>> > > >>> > > >> > > >> > > > >