This forum is closed to new posts and responses. Individual names altered for privacy purposes. The information contained in this website is provided for informational purposes only and should not be construed as a forum for customer support requests. Any customer support requests should be directed to the official HCL customer support channels below:

HCL Software Customer Support Portal for U.S. Federal Government clients
HCL Software Customer Support Portal



Jan 6, 2012, 5:21 PM
149 Posts

How to override the html lang attribute

  • Category: Server Side JavaScript
  • Platform: All
  • Release: 8.5.3
  • Role: Developer
  • Tags:
  • Replies: 5
 
I need to override the html "lang" attribute in my xpage, and set a language based on a what is in a user profile.
in the xpage properties I can set a default language, but this is only used if the browser has no language set. 
 
I always want the language set in the user profile to be the correct language 
 
 
I have tried to add an xpage attribute (attrs) and this will set the lang attribute but now I got two lang attributes like this: html lang="sv" lang="en" and it is not working.
 
 
I could use context.setLocaleString("sv") in every  xpage on beforePageLoad, but this does not really work very well as I then need to reload the page in code to get it working. beside it is not a very nice solution.
 
 
Thanks 
Thoams 
 
 
 
 
 
 
 
Jan 9, 2012, 9:43 PM
122 Posts
Re: How to override the html lang attribute
In the absence of any other ideas, I'll throw a couple of thoughts.
 
Is the setting to aggregate JavaScript and CSS files switched on? I found that overrode my attempts to change the Dojo version for the NSF because of what gets pushed out in the plugin. If so, try disabling that. Just a total stab in the dark, but may be the reason for Lang tag getting pushed in regardless of your settings.
 
The other thought is using a meta tag resource. Will that work?
 
A third one I've just thought of is themes. Because themes get applied right at the end of the JSF lifecycle, setting something on the ViewRoot control may override what XPages is applying, especially with override="true".
 
I haven't tried any, but just a few thoughts in the absence of any other suggestions.
Jan 10, 2012, 6:06 AM
149 Posts
Re: How to override the html lang attribute
 
The reason I need to override the html lang attributes is only because I want the language used to be controlled by a user profile. (maybe override is the wrong word)
currently, the language users get, is controlled by the settings in the webbrowser.
 
in other words, I want the user to be able to switch language permenently without changing the broser settting.
 
 
Thanks
Thomas
Jan 12, 2012, 1:44 PM
272 Posts
Re: How to override the html lang attribute
Hi,
 
maybe this goes to the wrong direction, but you could add your own ViewHandler. This would you allow to control the language application wide.
To do this, you have to create a java class like this:
 
package ch.hasselba.xpages.debug;

import java.util.Locale;
import javax.faces.context.FacesContext;
import javax.faces.application.ViewHandler;

public class ViewHandlerSH extends com.ibm.xsp.application.ViewHandlerExImpl {

    @Override
    public Locale calculateLocale(FacesContext arg0) {
       
return Locale.CHINESE;
    }

    public ViewHandlerSH(ViewHandler paramViewHandler){
        super(paramViewHandler);
    }

}
 
Add the code you want for the calculation in the method calculateLocale. For example you could do the lookup to the user profile here, or get settings from the session scope.
 
Then, you have to register the view handler in the faces-config:
 
<?xml version="1.0" encoding="UTF-8"?>
<faces-config>
  <application>
        <view-handler>ch.hasselba.xpages.debug.ViewHandlerSH</view-handler>
  </application>
</faces-config>
 
 
This example will always return chinese as preferred language.
 
Hope this helps
Sven
 
Jan 25, 2012, 1:47 PM
149 Posts
Re: How to override the html lang attribute
 Thank you Sven, I will try it! 
Aug 23, 2018, 11:43 AM
1 Posts
beforePageLoad

Hi 

I do use the solution you suggested :

<xp:this.beforePageLoad><![CDATA[#{javascript:context.setLocaleString("en");}]]></xp:this.beforePageLoad>

in every page.

I find it efficient and did not found any issue, so it is my best choice.
    


This forum is closed to new posts and responses. Individual names altered for privacy purposes. The information contained in this website is provided for informational purposes only and should not be construed as a forum for customer support requests. Any customer support requests should be directed to the official HCL customer support channels below:

HCL Software Customer Support Portal for U.S. Federal Government clients
HCL Software Customer Support Portal