home *** CD-ROM | disk | FTP | other *** search
- package java.util;
-
- import java.io.ObjectStreamException;
- import java.io.Serializable;
- import java.security.AccessController;
- import java.text.MessageFormat;
- import java.util.concurrent.ConcurrentHashMap;
- import java.util.spi.LocaleNameProvider;
- import sun.security.action.GetPropertyAction;
- import sun.util.LocaleServiceProviderPool;
- import sun.util.resources.LocaleData;
- import sun.util.resources.OpenListResourceBundle;
-
- public final class Locale implements Cloneable, Serializable {
- private static final ConcurrentHashMap<String, Locale> cache = new ConcurrentHashMap(32);
- public static final Locale ENGLISH = createSingleton("en__", "en", "");
- public static final Locale FRENCH = createSingleton("fr__", "fr", "");
- public static final Locale GERMAN = createSingleton("de__", "de", "");
- public static final Locale ITALIAN = createSingleton("it__", "it", "");
- public static final Locale JAPANESE = createSingleton("ja__", "ja", "");
- public static final Locale KOREAN = createSingleton("ko__", "ko", "");
- public static final Locale CHINESE = createSingleton("zh__", "zh", "");
- public static final Locale SIMPLIFIED_CHINESE = createSingleton("zh_CN_", "zh", "CN");
- public static final Locale TRADITIONAL_CHINESE = createSingleton("zh_TW_", "zh", "TW");
- public static final Locale FRANCE = createSingleton("fr_FR_", "fr", "FR");
- public static final Locale GERMANY = createSingleton("de_DE_", "de", "DE");
- public static final Locale ITALY = createSingleton("it_IT_", "it", "IT");
- public static final Locale JAPAN = createSingleton("ja_JP_", "ja", "JP");
- public static final Locale KOREA = createSingleton("ko_KR_", "ko", "KR");
- public static final Locale CHINA;
- public static final Locale PRC;
- public static final Locale TAIWAN;
- // $FF: renamed from: UK java.util.Locale
- public static final Locale field_0;
- // $FF: renamed from: US java.util.Locale
- public static final Locale field_1;
- public static final Locale CANADA;
- public static final Locale CANADA_FRENCH;
- public static final Locale ROOT;
- static final long serialVersionUID = 9149081749638150636L;
- private static final int DISPLAY_LANGUAGE = 0;
- private static final int DISPLAY_COUNTRY = 1;
- private static final int DISPLAY_VARIANT = 2;
- private final String language;
- private final String country;
- private final String variant;
- private volatile int hashcode;
- private transient volatile int hashCodeValue;
- private static Locale defaultLocale;
- private static volatile String[] isoLanguages;
- private static volatile String[] isoCountries;
-
- public Locale(String var1, String var2, String var3) {
- this.hashcode = -1;
- this.hashCodeValue = 0;
- this.language = this.convertOldISOCodes(var1);
- this.country = this.toUpperCase(var2).intern();
- this.variant = var3.intern();
- }
-
- public Locale(String var1, String var2) {
- this(var1, var2, "");
- }
-
- public Locale(String var1) {
- this(var1, "", "");
- }
-
- private Locale(String var1, String var2, boolean var3) {
- this.hashcode = -1;
- this.hashCodeValue = 0;
- this.language = var1;
- this.country = var2;
- this.variant = "";
- }
-
- private static Locale createSingleton(String var0, String var1, String var2) {
- Locale var3 = new Locale(var1, var2, false);
- cache.put(var0, var3);
- return var3;
- }
-
- static Locale getInstance(String var0, String var1, String var2) {
- if (var0 != null && var1 != null && var2 != null) {
- StringBuilder var3 = new StringBuilder();
- var3.append(var0).append('_').append(var1).append('_').append(var2);
- String var4 = var3.toString();
- Locale var5 = (Locale)cache.get(var4);
- if (var5 == null) {
- var5 = new Locale(var0, var1, var2);
- Locale var6 = (Locale)cache.putIfAbsent(var4, var5);
- if (var6 != null) {
- var5 = var6;
- }
- }
-
- return var5;
- } else {
- throw new NullPointerException();
- }
- }
-
- public static Locale getDefault() {
- if (defaultLocale == null) {
- String var0 = (String)AccessController.doPrivileged(new GetPropertyAction("user.language", "en"));
- String var1 = (String)AccessController.doPrivileged(new GetPropertyAction("user.region"));
- String var2;
- String var3;
- if (var1 != null) {
- int var4 = var1.indexOf(95);
- if (var4 >= 0) {
- var2 = var1.substring(0, var4);
- var3 = var1.substring(var4 + 1);
- } else {
- var2 = var1;
- var3 = "";
- }
- } else {
- var2 = (String)AccessController.doPrivileged(new GetPropertyAction("user.country", ""));
- var3 = (String)AccessController.doPrivileged(new GetPropertyAction("user.variant", ""));
- }
-
- defaultLocale = getInstance(var0, var2, var3);
- }
-
- return defaultLocale;
- }
-
- public static synchronized void setDefault(Locale var0) {
- if (var0 == null) {
- throw new NullPointerException("Can't set default locale to NULL");
- } else {
- SecurityManager var1 = System.getSecurityManager();
- if (var1 != null) {
- var1.checkPermission(new PropertyPermission("user.language", "write"));
- }
-
- defaultLocale = var0;
- }
- }
-
- public static Locale[] getAvailableLocales() {
- return LocaleServiceProviderPool.getAllAvailableLocales();
- }
-
- public static String[] getISOCountries() {
- if (isoCountries == null) {
- isoCountries = getISO2Table("ADANDAEAREAFAFGAGATGAIAIAALALBAMARMANANTAOAGOAQATAARARGASASMATAUTAUAUSAWABWAXALAAZAZEBABIHBBBRBBDBGDBEBELBFBFABGBGRBHBHRBIBDIBJBENBMBMUBNBRNBOBOLBRBRABSBHSBTBTNBVBVTBWBWABYBLRBZBLZCACANCCCCKCDCODCFCAFCGCOGCHCHECICIVCKCOKCLCHLCMCMRCNCHNCOCOLCRCRICSSCGCUCUBCVCPVCXCXRCYCYPCZCZEDEDEUDJDJIDKDNKDMDMADODOMDZDZAECECUEEESTEGEGYEHESHERERIESESPETETHFIFINFJFJIFKFLKFMFSMFOFROFRFRAGAGABGBGBRGDGRDGEGEOGFGUFGHGHAGIGIBGLGRLGMGMBGNGINGPGLPGQGNQGRGRCGSSGSGTGTMGUGUMGWGNBGYGUYHKHKGHMHMDHNHNDHRHRVHTHTIHUHUNIDIDNIEIRLILISRININDIOIOTIQIRQIRIRNISISLITITAJMJAMJOJORJPJPNKEKENKGKGZKHKHMKIKIRKMCOMKNKNAKPPRKKRKORKWKWTKYCYMKZKAZLALAOLBLBNLCLCALILIELKLKALRLBRLSLSOLTLTULULUXLVLVALYLBYMAMARMCMCOMDMDAMGMDGMHMHLMKMKDMLMLIMMMMRMNMNGMOMACMPMNPMQMTQMRMRTMSMSRMTMLTMUMUSMVMDVMWMWIMXMEXMYMYSMZMOZNANAMNCNCLNENERNFNFKNGNGANINICNLNLDNONORNPNPLNRNRUNUNIUNZNZLOMOMNPAPANPEPERPFPYFPGPNGPHPHLPKPAKPLPOLPMSPMPNPCNPRPRIPSPSEPTPRTPWPLWPYPRYQAQATREREUROROURURUSRWRWASASAUSBSLBSCSYCSDSDNSESWESGSGPSHSHNSISVNSJSJMSKSVKSLSLESMSMRSNSENSOSOMSRSURSTSTPSVSLVSYSYRSZSWZTCTCATDTCDTFATFTGTGOTHTHATJTJKTKTKLTLTLSTMTKMTNTUNTOTONTRTURTTTTOTVTUVTWTWNTZTZAUAUKRUGUGAUMUMIUSUSAUYURYUZUZBVAVATVCVCTVEVENVGVGBVIVIRVNVNMVUVUTWFWLFWSWSMYEYEMYTMYTZAZAFZMZMBZWZWE");
- }
-
- String[] var0 = new String[isoCountries.length];
- System.arraycopy(isoCountries, 0, var0, 0, isoCountries.length);
- return var0;
- }
-
- public static String[] getISOLanguages() {
- if (isoLanguages == null) {
- isoLanguages = getISO2Table("aaaarababkaeaveafafrakakaamamhanargararaasasmavavaayaymazazebabakbebelbgbulbhbihbibisbmbambnbenbobodbrbrebsboscacatcechechchacocoscrcrecscescuchucvchvcycymdadandedeudvdivdzdzoeeeweelellenengeoepoesspaetesteueusfafasfffulfifinfjfijfofaofrfrafyfrygaglegdglaglglggngrngugujgvglvhahauhehebhihinhohmohrhrvhthathuhunhyhyehzheriainaidindieileigiboiiiiiikipkinindioidoisislititaiuikuiwhebjajpnjiyidjvjavkakatkgkonkikikkjkuakkkazklkalkmkhmknkankokorkrkaukskaskukurkvkomkwcorkykirlalatlbltzlgluglilimlnlinlolaoltlitlulublvlavmgmlgmhmahmimrimkmkdmlmalmnmonmomolmrmarmsmsamtmltmymyananaunbnobndndenenepngndonlnldnnnnononornrnblnvnavnynyaocociojojiomormororiososspapanpipliplpolpspusptporququermrohrnrunroronrurusrwkinsasanscsrdsdsndsesmesgsagsisinskslkslslvsmsmosnsnasosomsqsqisrsrpsssswstsotsusunsvsweswswatatamteteltgtgkththatitirtktuktltgltntsntotontrturtstsotttattwtwitytahuguigukukrururduzuzbvevenvivievovolwawlnwowolxhxhoyiyidyoyorzazhazhzhozuzul");
- }
-
- String[] var0 = new String[isoLanguages.length];
- System.arraycopy(isoLanguages, 0, var0, 0, isoLanguages.length);
- return var0;
- }
-
- private static final String[] getISO2Table(String var0) {
- int var1 = var0.length() / 5;
- String[] var2 = new String[var1];
- int var3 = 0;
-
- for(int var4 = 0; var3 < var1; var4 += 5) {
- var2[var3] = var0.substring(var4, var4 + 2);
- ++var3;
- }
-
- return var2;
- }
-
- public String getLanguage() {
- return this.language;
- }
-
- public String getCountry() {
- return this.country;
- }
-
- public String getVariant() {
- return this.variant;
- }
-
- public final String toString() {
- boolean var1 = this.language.length() != 0;
- boolean var2 = this.country.length() != 0;
- boolean var3 = this.variant.length() != 0;
- StringBuilder var4 = new StringBuilder(this.language);
- if (var2 || var1 && var3) {
- var4.append('_').append(this.country);
- }
-
- if (var3 && (var1 || var2)) {
- var4.append('_').append(this.variant);
- }
-
- return var4.toString();
- }
-
- public String getISO3Language() throws MissingResourceException {
- String var1 = getISO3Code(this.language, "aaaarababkaeaveafafrakakaamamhanargararaasasmavavaayaymazazebabakbebelbgbulbhbihbibisbmbambnbenbobodbrbrebsboscacatcechechchacocoscrcrecscescuchucvchvcycymdadandedeudvdivdzdzoeeeweelellenengeoepoesspaetesteueusfafasfffulfifinfjfijfofaofrfrafyfrygaglegdglaglglggngrngugujgvglvhahauhehebhihinhohmohrhrvhthathuhunhyhyehzheriainaidindieileigiboiiiiiikipkinindioidoisislititaiuikuiwhebjajpnjiyidjvjavkakatkgkonkikikkjkuakkkazklkalkmkhmknkankokorkrkaukskaskukurkvkomkwcorkykirlalatlbltzlgluglilimlnlinlolaoltlitlulublvlavmgmlgmhmahmimrimkmkdmlmalmnmonmomolmrmarmsmsamtmltmymyananaunbnobndndenenepngndonlnldnnnnononornrnblnvnavnynyaocociojojiomormororiososspapanpipliplpolpspusptporququermrohrnrunroronrurusrwkinsasanscsrdsdsndsesmesgsagsisinskslkslslvsmsmosnsnasosomsqsqisrsrpsssswstsotsusunsvsweswswatatamteteltgtgkththatitirtktuktltgltntsntotontrturtstsotttattwtwitytahuguigukukrururduzuzbvevenvivievovolwawlnwowolxhxhoyiyidyoyorzazhazhzhozuzul");
- if (var1 == null) {
- throw new MissingResourceException("Couldn't find 3-letter language code for " + this.language, "FormatData_" + this.toString(), "ShortLanguage");
- } else {
- return var1;
- }
- }
-
- public String getISO3Country() throws MissingResourceException {
- String var1 = getISO3Code(this.country, "ADANDAEAREAFAFGAGATGAIAIAALALBAMARMANANTAOAGOAQATAARARGASASMATAUTAUAUSAWABWAXALAAZAZEBABIHBBBRBBDBGDBEBELBFBFABGBGRBHBHRBIBDIBJBENBMBMUBNBRNBOBOLBRBRABSBHSBTBTNBVBVTBWBWABYBLRBZBLZCACANCCCCKCDCODCFCAFCGCOGCHCHECICIVCKCOKCLCHLCMCMRCNCHNCOCOLCRCRICSSCGCUCUBCVCPVCXCXRCYCYPCZCZEDEDEUDJDJIDKDNKDMDMADODOMDZDZAECECUEEESTEGEGYEHESHERERIESESPETETHFIFINFJFJIFKFLKFMFSMFOFROFRFRAGAGABGBGBRGDGRDGEGEOGFGUFGHGHAGIGIBGLGRLGMGMBGNGINGPGLPGQGNQGRGRCGSSGSGTGTMGUGUMGWGNBGYGUYHKHKGHMHMDHNHNDHRHRVHTHTIHUHUNIDIDNIEIRLILISRININDIOIOTIQIRQIRIRNISISLITITAJMJAMJOJORJPJPNKEKENKGKGZKHKHMKIKIRKMCOMKNKNAKPPRKKRKORKWKWTKYCYMKZKAZLALAOLBLBNLCLCALILIELKLKALRLBRLSLSOLTLTULULUXLVLVALYLBYMAMARMCMCOMDMDAMGMDGMHMHLMKMKDMLMLIMMMMRMNMNGMOMACMPMNPMQMTQMRMRTMSMSRMTMLTMUMUSMVMDVMWMWIMXMEXMYMYSMZMOZNANAMNCNCLNENERNFNFKNGNGANINICNLNLDNONORNPNPLNRNRUNUNIUNZNZLOMOMNPAPANPEPERPFPYFPGPNGPHPHLPKPAKPLPOLPMSPMPNPCNPRPRIPSPSEPTPRTPWPLWPYPRYQAQATREREUROROURURUSRWRWASASAUSBSLBSCSYCSDSDNSESWESGSGPSHSHNSISVNSJSJMSKSVKSLSLESMSMRSNSENSOSOMSRSURSTSTPSVSLVSYSYRSZSWZTCTCATDTCDTFATFTGTGOTHTHATJTJKTKTKLTLTLSTMTKMTNTUNTOTONTRTURTTTTOTVTUVTWTWNTZTZAUAUKRUGUGAUMUMIUSUSAUYURYUZUZBVAVATVCVCTVEVENVGVGBVIVIRVNVNMVUVUTWFWLFWSWSMYEYEMYTMYTZAZAFZMZMBZWZWE");
- if (var1 == null) {
- throw new MissingResourceException("Couldn't find 3-letter country code for " + this.country, "FormatData_" + this.toString(), "ShortCountry");
- } else {
- return var1;
- }
- }
-
- private static final String getISO3Code(String var0, String var1) {
- int var2 = var0.length();
- if (var2 == 0) {
- return "";
- } else {
- int var3 = var1.length();
- int var4 = var3;
- if (var2 == 2) {
- char var5 = var0.charAt(0);
- char var6 = var0.charAt(1);
-
- for(var4 = 0; var4 < var3 && (var1.charAt(var4) != var5 || var1.charAt(var4 + 1) != var6); var4 += 5) {
- }
- }
-
- return var4 < var3 ? var1.substring(var4 + 2, var4 + 5) : null;
- }
- }
-
- public final String getDisplayLanguage() {
- return this.getDisplayLanguage(getDefault());
- }
-
- public String getDisplayLanguage(Locale var1) {
- return this.getDisplayString(this.language, var1, 0);
- }
-
- public final String getDisplayCountry() {
- return this.getDisplayCountry(getDefault());
- }
-
- public String getDisplayCountry(Locale var1) {
- return this.getDisplayString(this.country, var1, 1);
- }
-
- private String getDisplayString(String var1, Locale var2, int var3) {
- if (var1.length() == 0) {
- return "";
- } else if (var2 == null) {
- throw new NullPointerException();
- } else {
- try {
- OpenListResourceBundle var4 = LocaleData.getLocaleNames(var2);
- String var5 = var3 == 2 ? "%%" + var1 : var1;
- String var6 = null;
- LocaleServiceProviderPool var7 = LocaleServiceProviderPool.getPool(LocaleNameProvider.class);
- if (var7.hasProviders()) {
- var6 = (String)var7.getLocalizedObject(java.util.Locale.LocaleNameGetter.access$000(), var2, var4, var5, new Object[]{var3, var1});
- }
-
- if (var6 == null) {
- var6 = var4.getString(var5);
- }
-
- if (var6 != null) {
- return var6;
- }
- } catch (Exception var8) {
- }
-
- return var1;
- }
- }
-
- public final String getDisplayVariant() {
- return this.getDisplayVariant(getDefault());
- }
-
- public String getDisplayVariant(Locale var1) {
- if (this.variant.length() == 0) {
- return "";
- } else {
- OpenListResourceBundle var2 = LocaleData.getLocaleNames(var1);
- String[] var3 = this.getDisplayVariantArray(var2, var1);
- String var4 = null;
- String var5 = null;
-
- try {
- var4 = var2.getString("ListPattern");
- var5 = var2.getString("ListCompositionPattern");
- } catch (MissingResourceException var7) {
- }
-
- return formatList(var3, var4, var5);
- }
- }
-
- public final String getDisplayName() {
- return this.getDisplayName(getDefault());
- }
-
- public String getDisplayName(Locale var1) {
- OpenListResourceBundle var2 = LocaleData.getLocaleNames(var1);
- String var3 = this.getDisplayLanguage(var1);
- String var4 = this.getDisplayCountry(var1);
- String[] var5 = this.getDisplayVariantArray(var2, var1);
- String var6 = null;
- String var7 = null;
- String var8 = null;
-
- try {
- var6 = var2.getString("DisplayNamePattern");
- var7 = var2.getString("ListPattern");
- var8 = var2.getString("ListCompositionPattern");
- } catch (MissingResourceException var13) {
- }
-
- Object var9 = null;
- Object var10 = null;
- String var14;
- String[] var15;
- if (var3.length() != 0) {
- var14 = var3;
- if (var4.length() != 0) {
- var15 = new String[var5.length + 1];
- System.arraycopy(var5, 0, var15, 1, var5.length);
- var15[0] = var4;
- } else {
- var15 = var5;
- }
- } else {
- if (var4.length() == 0) {
- return formatList(var5, var7, var8);
- }
-
- var14 = var4;
- var15 = var5;
- }
-
- Object[] var11 = new Object[]{new Integer(var15.length != 0 ? 2 : 1), var14, var15.length != 0 ? formatList(var15, var7, var8) : null};
- if (var6 != null) {
- return (new MessageFormat(var6)).format(var11);
- } else {
- StringBuilder var12 = new StringBuilder();
- var12.append((String)var11[1]);
- if (var11.length > 2) {
- var12.append(" (");
- var12.append((String)var11[2]);
- var12.append(')');
- }
-
- return var12.toString();
- }
- }
-
- public Object clone() {
- try {
- Locale var1 = (Locale)super.clone();
- return var1;
- } catch (CloneNotSupportedException var2) {
- throw new InternalError();
- }
- }
-
- public int hashCode() {
- int var1 = this.hashCodeValue;
- if (var1 == 0) {
- var1 = this.language.hashCode() << 8 ^ this.country.hashCode() ^ this.variant.hashCode() << 4;
- this.hashCodeValue = var1;
- }
-
- return var1;
- }
-
- public boolean equals(Object var1) {
- if (this == var1) {
- return true;
- } else if (!(var1 instanceof Locale)) {
- return false;
- } else {
- Locale var2 = (Locale)var1;
- return this.language == var2.language && this.country == var2.country && this.variant == var2.variant;
- }
- }
-
- private String[] getDisplayVariantArray(OpenListResourceBundle var1, Locale var2) {
- StringTokenizer var3 = new StringTokenizer(this.variant, "_");
- String[] var4 = new String[var3.countTokens()];
-
- for(int var5 = 0; var5 < var4.length; ++var5) {
- var4[var5] = this.getDisplayString(var3.nextToken(), var2, 2);
- }
-
- return var4;
- }
-
- private static String formatList(String[] var0, String var1, String var2) {
- if (var1 != null && var2 != null) {
- if (var0.length > 3) {
- MessageFormat var5 = new MessageFormat(var2);
- var0 = composeList(var5, var0);
- }
-
- Object[] var6 = new Object[var0.length + 1];
- System.arraycopy(var0, 0, var6, 1, var0.length);
- var6[0] = new Integer(var0.length);
- MessageFormat var7 = new MessageFormat(var1);
- return var7.format(var6);
- } else {
- StringBuffer var3 = new StringBuffer();
-
- for(int var4 = 0; var4 < var0.length; ++var4) {
- if (var4 > 0) {
- var3.append(',');
- }
-
- var3.append(var0[var4]);
- }
-
- return var3.toString();
- }
- }
-
- private static String[] composeList(MessageFormat var0, String[] var1) {
- if (var1.length <= 3) {
- return var1;
- } else {
- String[] var2 = new String[]{var1[0], var1[1]};
- String var3 = var0.format(var2);
- String[] var4 = new String[var1.length - 1];
- System.arraycopy(var1, 2, var4, 1, var4.length - 1);
- var4[0] = var3;
- return composeList(var0, var4);
- }
- }
-
- private Object readResolve() throws ObjectStreamException {
- return getInstance(this.language, this.country, this.variant);
- }
-
- private String toLowerCase(String var1) {
- char[] var2 = new char[var1.length()];
-
- for(int var3 = 0; var3 < var2.length; ++var3) {
- var2[var3] = Character.toLowerCase(var1.charAt(var3));
- }
-
- return new String(var2);
- }
-
- private String toUpperCase(String var1) {
- char[] var2 = new char[var1.length()];
-
- for(int var3 = 0; var3 < var2.length; ++var3) {
- var2[var3] = Character.toUpperCase(var1.charAt(var3));
- }
-
- return new String(var2);
- }
-
- private String convertOldISOCodes(String var1) {
- var1 = this.toLowerCase(var1).intern();
- if (var1 == "he") {
- return "iw";
- } else if (var1 == "yi") {
- return "ji";
- } else {
- return var1 == "id" ? "in" : var1;
- }
- }
-
- static {
- CHINA = SIMPLIFIED_CHINESE;
- PRC = SIMPLIFIED_CHINESE;
- TAIWAN = TRADITIONAL_CHINESE;
- field_0 = createSingleton("en_GB_", "en", "GB");
- field_1 = createSingleton("en_US_", "en", "US");
- CANADA = createSingleton("en_CA_", "en", "CA");
- CANADA_FRENCH = createSingleton("fr_CA_", "fr", "CA");
- ROOT = createSingleton("__", "", "");
- defaultLocale = null;
- isoLanguages = null;
- isoCountries = null;
- }
- }
-