package org.pentaho.pac.server;
import java.io.IOException;
import java.util.Locale;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.lang.StringUtils;
import org.pentaho.platform.util.messages.LocaleHelper;
/**
* The BrowserLocaleServlet exists to generate a meta tag for the javascript on web client.
* The web client's javascript does not have a native way of detecting what locale the browser prefers.
*
* @author cboyden
*
*/
public class BrowserLocaleServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// Read in the requested locale as sent by the browser
Locale effectiveLocale = req.getLocale();
// Check for a ?locale=xx_XX override in the url
if (!StringUtils.isEmpty(req.getParameter("locale"))) { //$NON-NLS-1$
effectiveLocale = new Locale(req.getParameter("locale")); //$NON-NLS-1$
req.getSession().setAttribute("locale_override", req.getParameter("locale")); //$NON-NLS-1$ //$NON-NLS-2$
LocaleHelper.setLocaleOverride(effectiveLocale);
}
// Write the javacsript to the client for generating the meta tag within the html->head element
resp.getWriter().println("document.write('<meta name=\"gwt:property\" content=\"locale=" + effectiveLocale.toString() + "\"/>');"); //$NON-NLS-1$ //$NON-NLS-2$
}
}