Disable i18n translation in dialogs | Community
Skip to main content
gabrielav200407
New Participant
March 7, 2016
Solved

Disable i18n translation in dialogs

  • March 7, 2016
  • 13 replies
  • 4935 views

Hello,

I would like to disable i18n translation in dialogs. I have the situation where I load the options for a dropdown dynamically, from a servlet. The options are exactly how they should appear in the dropdown. However, CQ seems to do some additional translation for the options. Is there a way to disable this?

Thanks

This post is no longer active and is closed to new replies. Need help? Start a new post to ask your question.
Best answer by smacdonald2008

For 5.6 - overlay that and replace use of that without that logic that translates it. 

Can you post a screenshot too. I have never heard of this happening before. 

13 replies

gabrielav200407
New Participant
March 8, 2016

Sure,

So here is the dialog:

<?xml version="1.0" encoding="UTF-8"?> <jcr:root xmlns:cq="http://www.day.com/jcr/cq/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0" jcr:primaryType="cq:Dialog"> <items jcr:primaryType="cq:Widget" xtype="tabpanel"> <items jcr:primaryType="cq:WidgetCollection"> <app-properties jcr:primaryType="cq:Panel" title="App Properties"> <items jcr:primaryType="cq:WidgetCollection"> <type jcr:primaryType="cq:Widget" fieldLabel="App Version" name="./version" type="select" defaultValue="" xtype="selection" optionsRoot="." optionsTextField="value" optionsValueField="key" options="$PATH.versions.json"/> </items> </app-properties> </items> </items> </jcr:root>

I've hardcoded the options values in the versions.jsp file to simplify testing. Bellow are the results of $PATH.versions.jsp:

Bellow is the setup of the i18n label:

Bellow is the code snippet that does the translation:

for (var i = 0; i < options.length; i++) { var o = options[i]; storeConfig.data.push([o.value, o.text, CQ.I18n.getVarMessage(o[CQ.shared.XSS.getXSSPropertyName("text")]), o.qtip]); }

And here is the result:

 

Yeah, I was thinking of doing the same as you suggested i.e. overlay the Selection.js file.

smacdonald2008
smacdonald2008Accepted solution
New Participant
March 7, 2016

For 5.6 - overlay that and replace use of that without that logic that translates it. 

Can you post a screenshot too. I have never heard of this happening before. 

gabrielav200407
New Participant
March 7, 2016

After more debugging, it looks like the translation happens in the setOptions function of Selection.js, line 419:

for (var i = 0; i < options.length; i++) { var o = options[i]; storeConfig.data.push([o.value, o.text, CQ.I18n.getVarMessage(o[CQ.shared.XSS.getXSSPropertyName("text")]), o.qtip]); }

 

I am using CQ 5.6. 

smacdonald2008
New Participant
March 7, 2016

Let us know the results of your testing. 

gabrielav200407
New Participant
March 7, 2016

Hmm, I think I'll test this on a fresh project. It might be some custom implementation on our project that I am not aware of. I noticed that in the widgets documentation

https://docs.adobe.com/docs/en/cq/5-6-1/widgets-api/index.html?class=CQ.shared.HTTP it is mentioned that the values will be passed to CQ.Util.formatData (which uses translation) in case optionsRoot does not exist. However, I do have an optionsRoot property. I did some debugging on the widgets.js file and it doesn't call that function, just as it is documented.

I'll do some testing and let you know. Thanks for the quick replies.

smacdonald2008
New Participant
March 7, 2016

I have never seen this before - this is not a configurable setting that can be set. Can you post a screen shot of what you are seeing. 

gabrielav200407
New Participant
March 7, 2016

Thanks for the answer. However, I don't think it's related to the server side code. As I said, the returned results are correct. The problem is somewhere on the front end side.

smacdonald2008
New Participant
March 7, 2016

See the community article and the dialog in it - notice the values returned by the servlet - you will never get translated values using that code. 

gabrielav200407
New Participant
March 7, 2016

This is the dialog:

<?xml version="1.0" encoding="UTF-8"?> <jcr:root xmlns:cq="http://www.day.com/jcr/cq/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0" jcr:primaryType="cq:Dialog"> <items jcr:primaryType="cq:Widget" xtype="tabpanel"> <items jcr:primaryType="cq:WidgetCollection"> <app-properties jcr:primaryType="cq:Panel" title="App Properties"> <items jcr:primaryType="cq:WidgetCollection"> <type jcr:primaryType="cq:Widget" fieldLabel="App Version" name="./version" type="select" defaultValue="" xtype="selection" optionsRoot="." optionsTextField="value" optionsValueField="key" options="$PATH.versions.json"/> </items> </app-properties> </items> </items> </jcr:root> 

The results retrieved by $PATH.versions.json are correct. However something happens when they are present in the dialog...

The servlet result is:

[{"key":"","value":"(Empty)"},{"key":"v_1","value":"v_1"}]

However, because there is a label for v_1 with the value test for English, then instead of showing a dropdown with options: (Empty) and v_1, a dropdown with options (Empty) and test will be displayed.

edubey
New Participant
March 7, 2016

It would be helpful if you tell which code you are using to populate drop down..