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
|
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 |
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 namelanguages - the Accept-Language headercharsets - the Accept-Charset header
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 localecharsets - a comma-separated charset list
- Returns:
- the best charset for the given locale from the given list
|