Many thanks, Adrian! 2008/7/7 Adrian Crum <[EMAIL PROTECTED]>:
> Bruno, > > The expressions inside UI labels issue has been fixed in rev 674387. > > -Adrian > > > Bruno Busco wrote: > >> 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 >>>> >>>>> ... > > [Messaggio troncato]