Commit cb881fb1 by Michael Koch Committed by Michael Koch

2005-05-06 Michael Koch <konqueror@gmx.de>

	* java/util/Locale.java
	(defaultLocale): Use gnu.classpath.SystemProperties to get properties.
	(getLocale): New methods. Use it everywhere where instances of Locales
	are needed.
	(getDisplayLanguage): Merged javadoc.
	(getDisplayCountry): Likewise.
	(getDisplayVariant): Likewise.

From-SVN: r99303
parent 8108f998
2005-05-06 Michael Koch <konqueror@gmx.de>
* java/util/Locale.java
(defaultLocale): Use gnu.classpath.SystemProperties to get properties.
(getLocale): New methods. Use it everywhere where instances of Locales
are needed.
(getDisplayLanguage): Merged javadoc.
(getDisplayCountry): Likewise.
(getDisplayVariant): Likewise.
2005-05-06 Archie Cobbs <archie@dellroad.org>
* native/jni/gtk-peer/gnu_java_awt_peer_gtk_GdkPixbufDecoder.c:
......
/* Locale.java -- i18n locales
Copyright (C) 1998, 1999, 2001, 2002 Free Software Foundation, Inc.
Copyright (C) 1998, 1999, 2001, 2002, 2005 Free Software Foundation, Inc.
This file is part of GNU Classpath.
......@@ -38,6 +38,8 @@ exception statement from your version. */
package java.util;
import gnu.classpath.SystemProperties;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
......@@ -76,55 +78,56 @@ import java.io.Serializable;
* @author Jochen Hoenicke
* @author Paul Fisher
* @author Eric Blake (ebb9@email.byu.edu)
* @author Andrew John Hughes (gnu_andrew@member.fsf.org)
* @since 1.1
* @status updated to 1.4
*/
public final class Locale implements Serializable, Cloneable
{
/** Locale which represents the English language. */
public static final Locale ENGLISH = new Locale("en");
public static final Locale ENGLISH = getLocale("en");
/** Locale which represents the French language. */
public static final Locale FRENCH = new Locale("fr");
public static final Locale FRENCH = getLocale("fr");
/** Locale which represents the German language. */
public static final Locale GERMAN = new Locale("de");
public static final Locale GERMAN = getLocale("de");
/** Locale which represents the Italian language. */
public static final Locale ITALIAN = new Locale("it");
public static final Locale ITALIAN = getLocale("it");
/** Locale which represents the Japanese language. */
public static final Locale JAPANESE = new Locale("ja");
public static final Locale JAPANESE = getLocale("ja");
/** Locale which represents the Korean language. */
public static final Locale KOREAN = new Locale("ko");
public static final Locale KOREAN = getLocale("ko");
/** Locale which represents the Chinese language. */
public static final Locale CHINESE = new Locale("zh");
public static final Locale CHINESE = getLocale("zh");
/** Locale which represents the Chinese language as used in China. */
public static final Locale SIMPLIFIED_CHINESE = new Locale("zh", "CN");
public static final Locale SIMPLIFIED_CHINESE = getLocale("zh", "CN");
/**
* Locale which represents the Chinese language as used in Taiwan.
* Same as TAIWAN Locale.
*/
public static final Locale TRADITIONAL_CHINESE = new Locale("zh", "TW");
public static final Locale TRADITIONAL_CHINESE = getLocale("zh", "TW");
/** Locale which represents France. */
public static final Locale FRANCE = new Locale("fr", "FR");
public static final Locale FRANCE = getLocale("fr", "FR");
/** Locale which represents Germany. */
public static final Locale GERMANY = new Locale("de", "DE");
public static final Locale GERMANY = getLocale("de", "DE");
/** Locale which represents Italy. */
public static final Locale ITALY = new Locale("it", "IT");
public static final Locale ITALY = getLocale("it", "IT");
/** Locale which represents Japan. */
public static final Locale JAPAN = new Locale("ja", "JP");
public static final Locale JAPAN = getLocale("ja", "JP");
/** Locale which represents Korea. */
public static final Locale KOREA = new Locale("ko", "KR");
public static final Locale KOREA = getLocale("ko", "KR");
/**
* Locale which represents China.
......@@ -145,16 +148,16 @@ public final class Locale implements Serializable, Cloneable
public static final Locale TAIWAN = TRADITIONAL_CHINESE;
/** Locale which represents the United Kingdom. */
public static final Locale UK = new Locale("en", "GB");
public static final Locale UK = getLocale("en", "GB");
/** Locale which represents the United States. */
public static final Locale US = new Locale("en", "US");
public static final Locale US = getLocale("en", "US");
/** Locale which represents the English speaking portion of Canada. */
public static final Locale CANADA = new Locale("en", "CA");
public static final Locale CANADA = getLocale("en", "CA");
/** Locale which represents the French speaking portion of Canada. */
public static final Locale CANADA_FRENCH = new Locale("fr", "CA");
public static final Locale CANADA_FRENCH = getLocale("fr", "CA");
/**
* Compatible with JDK 1.1+.
......@@ -195,9 +198,47 @@ public final class Locale implements Serializable, Cloneable
* bootstrapping has completed.
*/
private static Locale defaultLocale =
new Locale(System.getProperty("user.language", "en"),
System.getProperty("user.region", ""),
System.getProperty("user.variant", ""));
getLocale(SystemProperties.getProperty("user.language", "en"),
SystemProperties.getProperty("user.region", ""),
SystemProperties.getProperty("user.variant", ""));
/**
* Retrieves the locale with the specified language from the cache.
*
* @param language the language of the locale to retrieve.
* @return the locale.
*/
private static Locale getLocale(String language)
{
return getLocale(language, "", "");
}
/**
* Retrieves the locale with the specified language and region
* from the cache.
*
* @param language the language of the locale to retrieve.
* @param region the region of the locale to retrieve.
* @return the locale.
*/
private static Locale getLocale(String language, String region)
{
return getLocale(language, region, "");
}
/**
* Retrieves the locale with the specified language, region
* and variant from the cache.
*
* @param language the language of the locale to retrieve.
* @param region the region of the locale to retrieve.
* @param variant the variant of the locale to retrieve.
* @return the locale.
*/
private static Locale getLocale(String language, String region, String variant)
{
return new Locale(language, region, variant);
}
/**
* Convert new iso639 codes to the old ones.
......@@ -529,19 +570,36 @@ public final class Locale implements Serializable, Cloneable
}
/**
* Gets the language name suitable for display to the user, formatted
* for a specified locale.
*
* @param locale locale to use for formatting
* <p>
* Gets the name of the language specified by this locale, in a form suitable
* for display to the user. If possible, the display name will be localized
* to the specified locale. For example, if the locale instance is
* <code>Locale.GERMANY</code>, and the specified locale is <code>Locale.UK</code>,
* the result would be 'German'. Using the German locale would instead give
* 'Deutsch'. If the display name can not be localized to the supplied
* locale, it will fall back on other output in the following order:
* </p>
* <ul>
* <li>the display name in the default locale</li>
* <li>the display name in English</li>
* <li>the ISO code</li>
* </ul>
* <p>
* If the language is unspecified by this locale, then the empty string is
* returned.
* </p>
*
* @param inLocale the locale to use for formatting the display string.
* @return the language name of this locale localized to the given locale,
* with the ISO code as backup
* with the default locale, English and the ISO code as backups.
* @throws NullPointerException if the supplied locale is null.
*/
public String getDisplayLanguage(Locale locale)
public String getDisplayLanguage(Locale inLocale)
{
try
{
ResourceBundle bundle
= ResourceBundle.getBundle("gnu.java.locale.iso639", locale);
= ResourceBundle.getBundle("gnu.java.locale.iso639", inLocale);
return bundle.getString(language);
}
catch (MissingResourceException ex)
......@@ -567,19 +625,36 @@ public final class Locale implements Serializable, Cloneable
}
/**
* Gets the country name suitable for display to the user, formatted
* for a specified locale.
*
* @param locale locale to use for formatting
* <p>
* Gets the name of the country specified by this locale, in a form suitable
* for display to the user. If possible, the display name will be localized
* to the specified locale. For example, if the locale instance is
* <code>Locale.GERMANY</code>, and the specified locale is <code>Locale.UK</code>,
* the result would be 'Germany'. Using the German locale would instead give
* 'Deutschland'. If the display name can not be localized to the supplied
* locale, it will fall back on other output in the following order:
* </p>
* <ul>
* <li>the display name in the default locale</li>
* <li>the display name in English</li>
* <li>the ISO code</li>
* </ul>
* <p>
* If the country is unspecified by this locale, then the empty string is
* returned.
* </p>
*
* @param inLocale the locale to use for formatting the display string.
* @return the country name of this locale localized to the given locale,
* with the ISO code as backup
* with the default locale, English and the ISO code as backups.
* @throws NullPointerException if the supplied locale is null.
*/
public String getDisplayCountry(Locale locale)
public String getDisplayCountry(Locale inLocale)
{
try
{
ResourceBundle bundle =
ResourceBundle.getBundle("gnu.java.locale.iso3166", locale);
ResourceBundle.getBundle("gnu.java.locale.iso3166", inLocale);
return bundle.getString(country);
}
catch (MissingResourceException ex)
......@@ -605,15 +680,31 @@ public final class Locale implements Serializable, Cloneable
}
/**
* Returns the variant name of this locale localized to the
* given locale. If the localized is not found, the variant code
* itself is returned.
*
* @param locale locale to use for formatting
* @return the variant code of this locale localized to the given locale,
* with the ISO code as backup
*/
public String getDisplayVariant(Locale locale)
* <p>
* Gets the name of the variant specified by this locale, in a form suitable
* for display to the user. If possible, the display name will be localized
* to the specified locale. For example, if the locale instance is a revised
* variant, and the specified locale is <code>Locale.UK</code>, the result
* would be 'REVISED'. Using the German locale would instead give
* 'Revidiert'. If the display name can not be localized to the supplied
* locale, it will fall back on other output in the following order:
* </p>
* <ul>
* <li>the display name in the default locale</li>
* <li>the display name in English</li>
* <li>the ISO code</li>
* </ul>
* <p>
* If the variant is unspecified by this locale, then the empty string is
* returned.
* </p>
*
* @param inLocale the locale to use for formatting the display string.
* @return the variant name of this locale localized to the given locale,
* with the default locale, English and the ISO code as backups.
* @throws NullPointerException if the supplied locale is null.
*/
public String getDisplayVariant(Locale inLocale)
{
// XXX - load a bundle?
return variant;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment