Servlets.com

Home

What's New?

com.oreilly.servlet

Servlet Polls

Mailing Lists

List Archives

Servlet Engines

Servlet ISPs

Servlet Tools

Documentation

Online Articles

The Soapbox

"Java Servlet
Programming,
Second Edition"

"Java Enterprise
Best Practices"

Speaking & Slides

About Jason

XQuery Affiliate

Advertising Info

LocaleNegotiator

com.oreilly.servlet
Class LocaleNegotiator


java.lang.Object
  |
  +--com.oreilly.servlet.LocaleNegotiator

public class LocaleNegotiator
extends java.lang.Object

A class to aid in servlet internationalization. It determines, from a client request, the best charset, locale, and resource bundle to use with the response.

LocaleNegotiator works by scanning through the client's language preferences (sent by browsers in the Accept-Language header) looking for any language for which there exists is a corresponding resource bundle. When it finds a correspondence, it uses the LocaleToCharsetMap class to determine the charset. If there's any problem, it tries to fall back to US English. The logic currently ignores the client's charset preferences (sent in the Accept-Charset header).

It can be used like this:

 String bundleName = "BundleName";
 String acceptLanguage = req.getHeader("Accept-Language");
 String acceptCharset = req.getHeader("Accept-Charset");
  
 LocaleNegotiator negotiator =
   new LocaleNegotiator(bundleName, acceptLanguage, acceptCharset);
  
 Locale locale = negotiator.getLocale();
 String charset = negotiator.getCharset();
 ResourceBundle bundle = negotiator.getBundle();  // may be null
  
 res.setContentType("text/plain; charset=" + charset);
 res.setHeader("Content-Language", locale.getLanguage());
 res.setHeader("Vary", "Accept-Language");
  
 PrintWriter out = res.getWriter();
  
 out.println(bundle.getString("resource"));
 

Version:
1.0, 98/09/18
Author:
Jason Hunter, Copyright © 1998
See Also:
LocaleToCharsetMap

Constructor Summary
LocaleNegotiator(java.lang.String bundleName, java.lang.String languages, java.lang.String charsets)
          Constructs a new LocaleNegotiator for the given bundle name, language list, and charset list.
 
Method Summary
 java.util.ResourceBundle getBundle()
          Gets the chosen bundle.
 java.lang.String getCharset()
          Gets the chosen charset.
protected  java.lang.String getCharsetForLocale(java.util.Locale loc, java.lang.String charsets)
          Gets the best charset for a given locale, selecting from a charset list.
 java.util.Locale getLocale()
          Gets the chosen locale.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

LocaleNegotiator

public LocaleNegotiator(java.lang.String bundleName,
                        java.lang.String languages,
                        java.lang.String charsets)
Constructs a new LocaleNegotiator for the given bundle name, language list, and charset list.

Parameters:
bundleName - the resource bundle name
languages - the Accept-Language header
charsets - the Accept-Charset header
Method Detail

getBundle

public java.util.ResourceBundle getBundle()
Gets the chosen bundle.

Returns:
the chosen bundle

getLocale

public java.util.Locale getLocale()
Gets the chosen locale.

Returns:
the chosen locale

getCharset

public java.lang.String getCharset()
Gets the chosen charset.

Returns:
the chosen charset

getCharsetForLocale

protected java.lang.String getCharsetForLocale(java.util.Locale loc,
                                               java.lang.String charsets)
Gets the best charset for a given locale, selecting from a charset list. Currently ignores the charset list. Subclasses can override this method to take the list into account.

Parameters:
loc - the locale
charsets - a comma-separated charset list
Returns:
the best charset for the given locale from the given list

 


Home   com.oreilly.servlet   Polls   Lists   Archives
Engines   ISPs   Tools   Docs   Articles   Soapbox   Book

Copyright © 1999-2005 Jason Hunter
Privacy Policy

webmaster@servlets.com
Last updated: October 30, 2006