HttpServletRequest getLocale returns OS locale not browser locale

Enerccio picture Enerccio · Oct 18, 2013 · Viewed 10.5k times · Source

I am using vaadin framework and in my application I have:

@Override
public void onRequestStart(HttpServletRequest request,
        HttpServletResponse response) {
    currentIP = request.getRemoteAddr();
    setLocale(request.getLocale());
    handle.set(this);    
    this.request = request;    
    this.response = response;
}

however, request.getLocale() returns en_US, which is my OS locale. However, in Firefox addon for switching locales (https://addons.mozilla.org/cs/firefox/addon/quick-locale-switcher/?src=userprofile), I have set up it to be cs_CZ, however, getLocale() will still return en_US.

Answer

camikiller picture camikiller · Oct 31, 2014

Try getting the session locale:

UI.getCurrent().getSession().getLocale();

That worked for me.