How to include parameters into UiLabels strings?

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
20 messages Options
Reply | Threaded
Open this post in threaded view
|

How to include parameters into UiLabels strings?

Bruno Busco
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
Reply | Threaded
Open this post in threaded view
|

Re: How to include parameters into UiLabels strings?

Adrian Crum-2
Use the <set> operator to copy the text to a new field, then use that field for display.

-Adrian


--- On Sun, 6/29/08, Bruno Busco <[hidden email]> wrote:

> From: Bruno Busco <[hidden email]>
> Subject: How to include parameters into UiLabels strings?
> To: [hidden email]
> Date: Sunday, June 29, 2008, 1:47 AM
> 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


     
Reply | Threaded
Open this post in threaded view
|

Re: How to include parameters into UiLabels strings?

Scott Gray
In reply to this post by Bruno Busco
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 <[hidden email]>:

> 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
>
Reply | Threaded
Open this post in threaded view
|

Re: How to include parameters into UiLabels strings?

Ashish Vijaywargiya
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 <[hidden email]> 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 <[hidden email]>:
>
> > 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
> >
>
Reply | Threaded
Open this post in threaded view
|

Re: How to include parameters into UiLabels strings?

Bruno Busco
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 <[hidden email]>:

> 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 <[hidden email]> 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 <[hidden email]>:
> >
> > > 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
> > >
> >
>
Reply | Threaded
Open this post in threaded view
|

Re: How to include parameters into UiLabels strings?

BJ Freeman
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 <[hidden email]>:
>
>> 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 <[hidden email]> 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 <[hidden email]>:
>>>
>>>> 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
>>>>
>

Reply | Threaded
Open this post in threaded view
|

Re: How to include parameters into UiLabels strings?

Bruno Busco
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 <[hidden email]>:

> 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 <[hidden email]>:
> >
> >> 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 <[hidden email]> 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 <[hidden email]>:
> >>>
> >>>> 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
> >>>>
> >
>
>
Reply | Threaded
Open this post in threaded view
|

Re: How to include parameters into UiLabels strings?

Adrian Crum
No, that is not the only solution. Did you read my previous reply?

-Adrian

Bruno Busco wrote:

> 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 <[hidden email]>:
>
>> 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 <[hidden email]>:
>>>
>>>> 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 <[hidden email]> 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 <[hidden email]>:
>>>>>
>>>>>> 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
>>>>>>
>>
>
Reply | Threaded
Open this post in threaded view
|

Re: How to include parameters into UiLabels strings?

BJ Freeman
In reply to this post by Bruno Busco
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 <[hidden email]>:
>
>> 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 <[hidden email]>:
>>>
>>>> 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 <[hidden email]> 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 <[hidden email]>:
>>>>>
>>>>>> 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
>>>>>>
>>
>

Reply | Threaded
Open this post in threaded view
|

Re: How to include parameters into UiLabels strings?

Bruno Busco
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 <[hidden email]>:

> 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 <[hidden email]>:
> >
> >> 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 <[hidden email]>:
> >>>
> >>>> 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 <[hidden email]>
> 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 <[hidden email]>:
> >>>>>
> >>>>>> 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
> >>>>>>
> >>
> >
>
>
Reply | Threaded
Open this post in threaded view
|

Re: How to include parameters into UiLabels strings?

BJ Freeman
would not uiLabelMap.ProductOnlyShowingFirstN be enough in the ftl
without the
> <set field="uiLabelMap_ProductOnlyShowingFirstN"
> value="${uiLabelMap.ProductOnlyShowingFirstN}"/>

Bruno Busco sent the following on 7/3/2008 12:00 PM:

> 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 <[hidden email]>:
>
>> 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 <[hidden email]>:
>>>
>>>> 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 <[hidden email]>:
>>>>>
>>>>>> 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 <[hidden email]>
>> 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 <[hidden email]>:
>>>>>>>
>>>>>>>> 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
>>>>>>>>
>>
>

Reply | Threaded
Open this post in threaded view
|

Re: How to include parameters into UiLabels strings?

Adrian Crum
In reply to this post by Bruno Busco
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 <[hidden email]>:
>
>> 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 <[hidden email]>:
>>>
>>>> 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 <[hidden email]>:
>>>>>
>>>>>> 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 <[hidden email]>
>> 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 <[hidden email]>:
>>>>>>>
>>>>>>>> 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
>>>>>>>>
>>
>
Reply | Threaded
Open this post in threaded view
|

Re: How to include parameters into UiLabels strings?

Bruno Busco
Agreed!
Thank you!

2008/7/3 Adrian Crum <[hidden email]>:

> 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 <[hidden email]>:
>>
>>  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 <[hidden email]>:
>>>>
>>>>  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 <[hidden email]>:
>>>>>>
>>>>>>  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 <[hidden email]>
>>>>>>>
>>>>>> 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 <[hidden email]>:
>>>>>>>>
>>>>>>>>  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
>>>>>>>>>
>>>>>>>>>
>>>
>>
Reply | Threaded
Open this post in threaded view
|

Re: How to include parameters into UiLabels strings?

BJ Freeman
In reply to this post by Adrian Crum
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 <[hidden email]>:
>>
>>> 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 <[hidden email]>:
>>>>
>>>>> 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 <[hidden email]>:
>>>>>>
>>>>>>> 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 <[hidden email]>
>>> 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 <[hidden email]>:
>>>>>>>>
>>>>>>>>> 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
>>>>>>>>>
>>>
>>
>
>
>

Reply | Threaded
Open this post in threaded view
|

Re: How to include parameters into UiLabels strings?

Adrian Crum
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 <[hidden email]>:
>>>
>>>> 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 <[hidden email]>:
>>>>>
>>>>>> 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 <[hidden email]>:
>>>>>>>
>>>>>>>> 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 <[hidden email]>
>>>> 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 <[hidden email]>:
>>>>>>>>>
>>>>>>>>>> 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
>>>>>>>>>>
>>
>>
>
>
Reply | Threaded
Open this post in threaded view
|

Re: How to include parameters into UiLabels strings?

Bruno Busco
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 <[hidden email]>:

> 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 <[hidden email]>:
>>>>
>>>>  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 <[hidden email]>:
>>>>>>
>>>>>>  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 <[hidden email]>:
>>>>>>>>
>>>>>>>>  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 <[hidden email]>
>>>>>>>>>
>>>>>>>> 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 <[hidden email]>:
>>>>>>>>>>
>>>>>>>>>>  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
>>>>>>>>>>>
>>>>>>>>>>>
>>>
>>>
>>
>>
Reply | Threaded
Open this post in threaded view
|

Re: How to include parameters into UiLabels strings?

Adrian Crum-2
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 <[hidden email]> wrote:

> From: Bruno Busco <[hidden email]>
> Subject: Re: How to include parameters into UiLabels strings?
> To: [hidden email]
> 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 <[hidden email]>:
>
> > 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
> <[hidden email]>:
> >>>>
> >>>>  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
> <[hidden email]>:
> >>>>>>
> >>>>>>  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 <[hidden email]>:
> >>>>>>>>
> >>>>>>>>  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 <[hidden email]>
> >>>>>>>>>
> >>>>>>>> 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 <[hidden email]>:
> >>>>>>>>>>
> >>>>>>>>>>  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
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>
> >>>
> >>
> >>


     
Reply | Threaded
Open this post in threaded view
|

Re: How to include parameters into UiLabels strings?

Bruno Busco
Sure,
thanks!

-Bruno

2008/7/4 Adrian Crum <[hidden email]>:

> 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 <[hidden email]> wrote:
>
> > From: Bruno Busco <[hidden email]>
> > Subject: Re: How to include parameters into UiLabels strings?
> > To: [hidden email]
> > 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 <[hidden email]>:
> >
> > > 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
> > <[hidden email]>:
> > >>>>
> > >>>>  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
> > <[hidden email]>:
> > >>>>>>
> > >>>>>>  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 <[hidden email]>:
> > >>>>>>>>
> > >>>>>>>>  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 <[hidden email]>
> > >>>>>>>>>
> > >>>>>>>> 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 <[hidden email]>:
> > >>>>>>>>>>
> > >>>>>>>>>>  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
> > >>>>>>>>>>>
> > >>>>>>>>>>>
> > >>>
> > >>>
> > >>
> > >>
>
>
>
>
Reply | Threaded
Open this post in threaded view
|

Re: How to include parameters into UiLabels strings?

Adrian Crum
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 <[hidden email]>:
>
>> 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 <[hidden email]> wrote:
>>
>>> From: Bruno Busco <[hidden email]>
>>> Subject: Re: How to include parameters into UiLabels strings?
>>> To: [hidden email]
>>> 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 <[hidden email]>:
>>>
>>>> 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
>>> <[hidden email]>:
>>>>>>>  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
>>> <[hidden email]>:
>>>>>>>>>  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 <[hidden email]>:
>>>>>>>>>>>  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 <[hidden email]>
>>>>>>>>>>> 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 <[hidden email]>:
>>>>>>>>>>>>>  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
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>
>>>>>
>>
>>
>>
>
Reply | Threaded
Open this post in threaded view
|

Re: How to include parameters into UiLabels strings?

Bruno Busco
Many thanks, Adrian!

2008/7/7 Adrian Crum <[hidden email]>:

> 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 <[hidden email]>:
>>
>>  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 <[hidden email]> wrote:
>>>
>>>  From: Bruno Busco <[hidden email]>
>>>> Subject: Re: How to include parameters into UiLabels strings?
>>>> To: [hidden email]
>>>> 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 <[hidden email]>:
>>>>
>>>>  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
>>>>>>>>
>>>>>>> <[hidden email]>:
>>>>
>>>>>  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
>>>>>>>>>>
>>>>>>>>> <[hidden email]>:
>>>>
>>>>>  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 <[hidden email]>:
>>>>
>>>>>  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 <[hidden email]>
>>>>
>>>>> 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 <[hidden email]>:
>>>>
>>>>>  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]