home *** CD-ROM | disk | FTP | other *** search
/ Sky at Night 2007 June / SAN CD 6-2007 CD-ROM 25.iso / pc / Software / AstroGrav_Win / Java / jre1.6.0 / lib / rt.jar / java / util / Locale.class (.txt) < prev    next >
Encoding:
Java Class File  |  2006-11-29  |  11.6 KB  |  500 lines

  1. package java.util;
  2.  
  3. import java.io.ObjectStreamException;
  4. import java.io.Serializable;
  5. import java.security.AccessController;
  6. import java.text.MessageFormat;
  7. import java.util.concurrent.ConcurrentHashMap;
  8. import java.util.spi.LocaleNameProvider;
  9. import sun.security.action.GetPropertyAction;
  10. import sun.util.LocaleServiceProviderPool;
  11. import sun.util.resources.LocaleData;
  12. import sun.util.resources.OpenListResourceBundle;
  13.  
  14. public final class Locale implements Cloneable, Serializable {
  15.    private static final ConcurrentHashMap<String, Locale> cache = new ConcurrentHashMap(32);
  16.    public static final Locale ENGLISH = createSingleton("en__", "en", "");
  17.    public static final Locale FRENCH = createSingleton("fr__", "fr", "");
  18.    public static final Locale GERMAN = createSingleton("de__", "de", "");
  19.    public static final Locale ITALIAN = createSingleton("it__", "it", "");
  20.    public static final Locale JAPANESE = createSingleton("ja__", "ja", "");
  21.    public static final Locale KOREAN = createSingleton("ko__", "ko", "");
  22.    public static final Locale CHINESE = createSingleton("zh__", "zh", "");
  23.    public static final Locale SIMPLIFIED_CHINESE = createSingleton("zh_CN_", "zh", "CN");
  24.    public static final Locale TRADITIONAL_CHINESE = createSingleton("zh_TW_", "zh", "TW");
  25.    public static final Locale FRANCE = createSingleton("fr_FR_", "fr", "FR");
  26.    public static final Locale GERMANY = createSingleton("de_DE_", "de", "DE");
  27.    public static final Locale ITALY = createSingleton("it_IT_", "it", "IT");
  28.    public static final Locale JAPAN = createSingleton("ja_JP_", "ja", "JP");
  29.    public static final Locale KOREA = createSingleton("ko_KR_", "ko", "KR");
  30.    public static final Locale CHINA;
  31.    public static final Locale PRC;
  32.    public static final Locale TAIWAN;
  33.    // $FF: renamed from: UK java.util.Locale
  34.    public static final Locale field_0;
  35.    // $FF: renamed from: US java.util.Locale
  36.    public static final Locale field_1;
  37.    public static final Locale CANADA;
  38.    public static final Locale CANADA_FRENCH;
  39.    public static final Locale ROOT;
  40.    static final long serialVersionUID = 9149081749638150636L;
  41.    private static final int DISPLAY_LANGUAGE = 0;
  42.    private static final int DISPLAY_COUNTRY = 1;
  43.    private static final int DISPLAY_VARIANT = 2;
  44.    private final String language;
  45.    private final String country;
  46.    private final String variant;
  47.    private volatile int hashcode;
  48.    private transient volatile int hashCodeValue;
  49.    private static Locale defaultLocale;
  50.    private static volatile String[] isoLanguages;
  51.    private static volatile String[] isoCountries;
  52.  
  53.    public Locale(String var1, String var2, String var3) {
  54.       this.hashcode = -1;
  55.       this.hashCodeValue = 0;
  56.       this.language = this.convertOldISOCodes(var1);
  57.       this.country = this.toUpperCase(var2).intern();
  58.       this.variant = var3.intern();
  59.    }
  60.  
  61.    public Locale(String var1, String var2) {
  62.       this(var1, var2, "");
  63.    }
  64.  
  65.    public Locale(String var1) {
  66.       this(var1, "", "");
  67.    }
  68.  
  69.    private Locale(String var1, String var2, boolean var3) {
  70.       this.hashcode = -1;
  71.       this.hashCodeValue = 0;
  72.       this.language = var1;
  73.       this.country = var2;
  74.       this.variant = "";
  75.    }
  76.  
  77.    private static Locale createSingleton(String var0, String var1, String var2) {
  78.       Locale var3 = new Locale(var1, var2, false);
  79.       cache.put(var0, var3);
  80.       return var3;
  81.    }
  82.  
  83.    static Locale getInstance(String var0, String var1, String var2) {
  84.       if (var0 != null && var1 != null && var2 != null) {
  85.          StringBuilder var3 = new StringBuilder();
  86.          var3.append(var0).append('_').append(var1).append('_').append(var2);
  87.          String var4 = var3.toString();
  88.          Locale var5 = (Locale)cache.get(var4);
  89.          if (var5 == null) {
  90.             var5 = new Locale(var0, var1, var2);
  91.             Locale var6 = (Locale)cache.putIfAbsent(var4, var5);
  92.             if (var6 != null) {
  93.                var5 = var6;
  94.             }
  95.          }
  96.  
  97.          return var5;
  98.       } else {
  99.          throw new NullPointerException();
  100.       }
  101.    }
  102.  
  103.    public static Locale getDefault() {
  104.       if (defaultLocale == null) {
  105.          String var0 = (String)AccessController.doPrivileged(new GetPropertyAction("user.language", "en"));
  106.          String var1 = (String)AccessController.doPrivileged(new GetPropertyAction("user.region"));
  107.          String var2;
  108.          String var3;
  109.          if (var1 != null) {
  110.             int var4 = var1.indexOf(95);
  111.             if (var4 >= 0) {
  112.                var2 = var1.substring(0, var4);
  113.                var3 = var1.substring(var4 + 1);
  114.             } else {
  115.                var2 = var1;
  116.                var3 = "";
  117.             }
  118.          } else {
  119.             var2 = (String)AccessController.doPrivileged(new GetPropertyAction("user.country", ""));
  120.             var3 = (String)AccessController.doPrivileged(new GetPropertyAction("user.variant", ""));
  121.          }
  122.  
  123.          defaultLocale = getInstance(var0, var2, var3);
  124.       }
  125.  
  126.       return defaultLocale;
  127.    }
  128.  
  129.    public static synchronized void setDefault(Locale var0) {
  130.       if (var0 == null) {
  131.          throw new NullPointerException("Can't set default locale to NULL");
  132.       } else {
  133.          SecurityManager var1 = System.getSecurityManager();
  134.          if (var1 != null) {
  135.             var1.checkPermission(new PropertyPermission("user.language", "write"));
  136.          }
  137.  
  138.          defaultLocale = var0;
  139.       }
  140.    }
  141.  
  142.    public static Locale[] getAvailableLocales() {
  143.       return LocaleServiceProviderPool.getAllAvailableLocales();
  144.    }
  145.  
  146.    public static String[] getISOCountries() {
  147.       if (isoCountries == null) {
  148.          isoCountries = getISO2Table("ADANDAEAREAFAFGAGATGAIAIAALALBAMARMANANTAOAGOAQATAARARGASASMATAUTAUAUSAWABWAXALAAZAZEBABIHBBBRBBDBGDBEBELBFBFABGBGRBHBHRBIBDIBJBENBMBMUBNBRNBOBOLBRBRABSBHSBTBTNBVBVTBWBWABYBLRBZBLZCACANCCCCKCDCODCFCAFCGCOGCHCHECICIVCKCOKCLCHLCMCMRCNCHNCOCOLCRCRICSSCGCUCUBCVCPVCXCXRCYCYPCZCZEDEDEUDJDJIDKDNKDMDMADODOMDZDZAECECUEEESTEGEGYEHESHERERIESESPETETHFIFINFJFJIFKFLKFMFSMFOFROFRFRAGAGABGBGBRGDGRDGEGEOGFGUFGHGHAGIGIBGLGRLGMGMBGNGINGPGLPGQGNQGRGRCGSSGSGTGTMGUGUMGWGNBGYGUYHKHKGHMHMDHNHNDHRHRVHTHTIHUHUNIDIDNIEIRLILISRININDIOIOTIQIRQIRIRNISISLITITAJMJAMJOJORJPJPNKEKENKGKGZKHKHMKIKIRKMCOMKNKNAKPPRKKRKORKWKWTKYCYMKZKAZLALAOLBLBNLCLCALILIELKLKALRLBRLSLSOLTLTULULUXLVLVALYLBYMAMARMCMCOMDMDAMGMDGMHMHLMKMKDMLMLIMMMMRMNMNGMOMACMPMNPMQMTQMRMRTMSMSRMTMLTMUMUSMVMDVMWMWIMXMEXMYMYSMZMOZNANAMNCNCLNENERNFNFKNGNGANINICNLNLDNONORNPNPLNRNRUNUNIUNZNZLOMOMNPAPANPEPERPFPYFPGPNGPHPHLPKPAKPLPOLPMSPMPNPCNPRPRIPSPSEPTPRTPWPLWPYPRYQAQATREREUROROURURUSRWRWASASAUSBSLBSCSYCSDSDNSESWESGSGPSHSHNSISVNSJSJMSKSVKSLSLESMSMRSNSENSOSOMSRSURSTSTPSVSLVSYSYRSZSWZTCTCATDTCDTFATFTGTGOTHTHATJTJKTKTKLTLTLSTMTKMTNTUNTOTONTRTURTTTTOTVTUVTWTWNTZTZAUAUKRUGUGAUMUMIUSUSAUYURYUZUZBVAVATVCVCTVEVENVGVGBVIVIRVNVNMVUVUTWFWLFWSWSMYEYEMYTMYTZAZAFZMZMBZWZWE");
  149.       }
  150.  
  151.       String[] var0 = new String[isoCountries.length];
  152.       System.arraycopy(isoCountries, 0, var0, 0, isoCountries.length);
  153.       return var0;
  154.    }
  155.  
  156.    public static String[] getISOLanguages() {
  157.       if (isoLanguages == null) {
  158.          isoLanguages = getISO2Table("aaaarababkaeaveafafrakakaamamhanargararaasasmavavaayaymazazebabakbebelbgbulbhbihbibisbmbambnbenbobodbrbrebsboscacatcechechchacocoscrcrecscescuchucvchvcycymdadandedeudvdivdzdzoeeeweelellenengeoepoesspaetesteueusfafasfffulfifinfjfijfofaofrfrafyfrygaglegdglaglglggngrngugujgvglvhahauhehebhihinhohmohrhrvhthathuhunhyhyehzheriainaidindieileigiboiiiiiikipkinindioidoisislititaiuikuiwhebjajpnjiyidjvjavkakatkgkonkikikkjkuakkkazklkalkmkhmknkankokorkrkaukskaskukurkvkomkwcorkykirlalatlbltzlgluglilimlnlinlolaoltlitlulublvlavmgmlgmhmahmimrimkmkdmlmalmnmonmomolmrmarmsmsamtmltmymyananaunbnobndndenenepngndonlnldnnnnononornrnblnvnavnynyaocociojojiomormororiososspapanpipliplpolpspusptporququermrohrnrunroronrurusrwkinsasanscsrdsdsndsesmesgsagsisinskslkslslvsmsmosnsnasosomsqsqisrsrpsssswstsotsusunsvsweswswatatamteteltgtgkththatitirtktuktltgltntsntotontrturtstsotttattwtwitytahuguigukukrururduzuzbvevenvivievovolwawlnwowolxhxhoyiyidyoyorzazhazhzhozuzul");
  159.       }
  160.  
  161.       String[] var0 = new String[isoLanguages.length];
  162.       System.arraycopy(isoLanguages, 0, var0, 0, isoLanguages.length);
  163.       return var0;
  164.    }
  165.  
  166.    private static final String[] getISO2Table(String var0) {
  167.       int var1 = var0.length() / 5;
  168.       String[] var2 = new String[var1];
  169.       int var3 = 0;
  170.  
  171.       for(int var4 = 0; var3 < var1; var4 += 5) {
  172.          var2[var3] = var0.substring(var4, var4 + 2);
  173.          ++var3;
  174.       }
  175.  
  176.       return var2;
  177.    }
  178.  
  179.    public String getLanguage() {
  180.       return this.language;
  181.    }
  182.  
  183.    public String getCountry() {
  184.       return this.country;
  185.    }
  186.  
  187.    public String getVariant() {
  188.       return this.variant;
  189.    }
  190.  
  191.    public final String toString() {
  192.       boolean var1 = this.language.length() != 0;
  193.       boolean var2 = this.country.length() != 0;
  194.       boolean var3 = this.variant.length() != 0;
  195.       StringBuilder var4 = new StringBuilder(this.language);
  196.       if (var2 || var1 && var3) {
  197.          var4.append('_').append(this.country);
  198.       }
  199.  
  200.       if (var3 && (var1 || var2)) {
  201.          var4.append('_').append(this.variant);
  202.       }
  203.  
  204.       return var4.toString();
  205.    }
  206.  
  207.    public String getISO3Language() throws MissingResourceException {
  208.       String var1 = getISO3Code(this.language, "aaaarababkaeaveafafrakakaamamhanargararaasasmavavaayaymazazebabakbebelbgbulbhbihbibisbmbambnbenbobodbrbrebsboscacatcechechchacocoscrcrecscescuchucvchvcycymdadandedeudvdivdzdzoeeeweelellenengeoepoesspaetesteueusfafasfffulfifinfjfijfofaofrfrafyfrygaglegdglaglglggngrngugujgvglvhahauhehebhihinhohmohrhrvhthathuhunhyhyehzheriainaidindieileigiboiiiiiikipkinindioidoisislititaiuikuiwhebjajpnjiyidjvjavkakatkgkonkikikkjkuakkkazklkalkmkhmknkankokorkrkaukskaskukurkvkomkwcorkykirlalatlbltzlgluglilimlnlinlolaoltlitlulublvlavmgmlgmhmahmimrimkmkdmlmalmnmonmomolmrmarmsmsamtmltmymyananaunbnobndndenenepngndonlnldnnnnononornrnblnvnavnynyaocociojojiomormororiososspapanpipliplpolpspusptporququermrohrnrunroronrurusrwkinsasanscsrdsdsndsesmesgsagsisinskslkslslvsmsmosnsnasosomsqsqisrsrpsssswstsotsusunsvsweswswatatamteteltgtgkththatitirtktuktltgltntsntotontrturtstsotttattwtwitytahuguigukukrururduzuzbvevenvivievovolwawlnwowolxhxhoyiyidyoyorzazhazhzhozuzul");
  209.       if (var1 == null) {
  210.          throw new MissingResourceException("Couldn't find 3-letter language code for " + this.language, "FormatData_" + this.toString(), "ShortLanguage");
  211.       } else {
  212.          return var1;
  213.       }
  214.    }
  215.  
  216.    public String getISO3Country() throws MissingResourceException {
  217.       String var1 = getISO3Code(this.country, "ADANDAEAREAFAFGAGATGAIAIAALALBAMARMANANTAOAGOAQATAARARGASASMATAUTAUAUSAWABWAXALAAZAZEBABIHBBBRBBDBGDBEBELBFBFABGBGRBHBHRBIBDIBJBENBMBMUBNBRNBOBOLBRBRABSBHSBTBTNBVBVTBWBWABYBLRBZBLZCACANCCCCKCDCODCFCAFCGCOGCHCHECICIVCKCOKCLCHLCMCMRCNCHNCOCOLCRCRICSSCGCUCUBCVCPVCXCXRCYCYPCZCZEDEDEUDJDJIDKDNKDMDMADODOMDZDZAECECUEEESTEGEGYEHESHERERIESESPETETHFIFINFJFJIFKFLKFMFSMFOFROFRFRAGAGABGBGBRGDGRDGEGEOGFGUFGHGHAGIGIBGLGRLGMGMBGNGINGPGLPGQGNQGRGRCGSSGSGTGTMGUGUMGWGNBGYGUYHKHKGHMHMDHNHNDHRHRVHTHTIHUHUNIDIDNIEIRLILISRININDIOIOTIQIRQIRIRNISISLITITAJMJAMJOJORJPJPNKEKENKGKGZKHKHMKIKIRKMCOMKNKNAKPPRKKRKORKWKWTKYCYMKZKAZLALAOLBLBNLCLCALILIELKLKALRLBRLSLSOLTLTULULUXLVLVALYLBYMAMARMCMCOMDMDAMGMDGMHMHLMKMKDMLMLIMMMMRMNMNGMOMACMPMNPMQMTQMRMRTMSMSRMTMLTMUMUSMVMDVMWMWIMXMEXMYMYSMZMOZNANAMNCNCLNENERNFNFKNGNGANINICNLNLDNONORNPNPLNRNRUNUNIUNZNZLOMOMNPAPANPEPERPFPYFPGPNGPHPHLPKPAKPLPOLPMSPMPNPCNPRPRIPSPSEPTPRTPWPLWPYPRYQAQATREREUROROURURUSRWRWASASAUSBSLBSCSYCSDSDNSESWESGSGPSHSHNSISVNSJSJMSKSVKSLSLESMSMRSNSENSOSOMSRSURSTSTPSVSLVSYSYRSZSWZTCTCATDTCDTFATFTGTGOTHTHATJTJKTKTKLTLTLSTMTKMTNTUNTOTONTRTURTTTTOTVTUVTWTWNTZTZAUAUKRUGUGAUMUMIUSUSAUYURYUZUZBVAVATVCVCTVEVENVGVGBVIVIRVNVNMVUVUTWFWLFWSWSMYEYEMYTMYTZAZAFZMZMBZWZWE");
  218.       if (var1 == null) {
  219.          throw new MissingResourceException("Couldn't find 3-letter country code for " + this.country, "FormatData_" + this.toString(), "ShortCountry");
  220.       } else {
  221.          return var1;
  222.       }
  223.    }
  224.  
  225.    private static final String getISO3Code(String var0, String var1) {
  226.       int var2 = var0.length();
  227.       if (var2 == 0) {
  228.          return "";
  229.       } else {
  230.          int var3 = var1.length();
  231.          int var4 = var3;
  232.          if (var2 == 2) {
  233.             char var5 = var0.charAt(0);
  234.             char var6 = var0.charAt(1);
  235.  
  236.             for(var4 = 0; var4 < var3 && (var1.charAt(var4) != var5 || var1.charAt(var4 + 1) != var6); var4 += 5) {
  237.             }
  238.          }
  239.  
  240.          return var4 < var3 ? var1.substring(var4 + 2, var4 + 5) : null;
  241.       }
  242.    }
  243.  
  244.    public final String getDisplayLanguage() {
  245.       return this.getDisplayLanguage(getDefault());
  246.    }
  247.  
  248.    public String getDisplayLanguage(Locale var1) {
  249.       return this.getDisplayString(this.language, var1, 0);
  250.    }
  251.  
  252.    public final String getDisplayCountry() {
  253.       return this.getDisplayCountry(getDefault());
  254.    }
  255.  
  256.    public String getDisplayCountry(Locale var1) {
  257.       return this.getDisplayString(this.country, var1, 1);
  258.    }
  259.  
  260.    private String getDisplayString(String var1, Locale var2, int var3) {
  261.       if (var1.length() == 0) {
  262.          return "";
  263.       } else if (var2 == null) {
  264.          throw new NullPointerException();
  265.       } else {
  266.          try {
  267.             OpenListResourceBundle var4 = LocaleData.getLocaleNames(var2);
  268.             String var5 = var3 == 2 ? "%%" + var1 : var1;
  269.             String var6 = null;
  270.             LocaleServiceProviderPool var7 = LocaleServiceProviderPool.getPool(LocaleNameProvider.class);
  271.             if (var7.hasProviders()) {
  272.                var6 = (String)var7.getLocalizedObject(java.util.Locale.LocaleNameGetter.access$000(), var2, var4, var5, new Object[]{var3, var1});
  273.             }
  274.  
  275.             if (var6 == null) {
  276.                var6 = var4.getString(var5);
  277.             }
  278.  
  279.             if (var6 != null) {
  280.                return var6;
  281.             }
  282.          } catch (Exception var8) {
  283.          }
  284.  
  285.          return var1;
  286.       }
  287.    }
  288.  
  289.    public final String getDisplayVariant() {
  290.       return this.getDisplayVariant(getDefault());
  291.    }
  292.  
  293.    public String getDisplayVariant(Locale var1) {
  294.       if (this.variant.length() == 0) {
  295.          return "";
  296.       } else {
  297.          OpenListResourceBundle var2 = LocaleData.getLocaleNames(var1);
  298.          String[] var3 = this.getDisplayVariantArray(var2, var1);
  299.          String var4 = null;
  300.          String var5 = null;
  301.  
  302.          try {
  303.             var4 = var2.getString("ListPattern");
  304.             var5 = var2.getString("ListCompositionPattern");
  305.          } catch (MissingResourceException var7) {
  306.          }
  307.  
  308.          return formatList(var3, var4, var5);
  309.       }
  310.    }
  311.  
  312.    public final String getDisplayName() {
  313.       return this.getDisplayName(getDefault());
  314.    }
  315.  
  316.    public String getDisplayName(Locale var1) {
  317.       OpenListResourceBundle var2 = LocaleData.getLocaleNames(var1);
  318.       String var3 = this.getDisplayLanguage(var1);
  319.       String var4 = this.getDisplayCountry(var1);
  320.       String[] var5 = this.getDisplayVariantArray(var2, var1);
  321.       String var6 = null;
  322.       String var7 = null;
  323.       String var8 = null;
  324.  
  325.       try {
  326.          var6 = var2.getString("DisplayNamePattern");
  327.          var7 = var2.getString("ListPattern");
  328.          var8 = var2.getString("ListCompositionPattern");
  329.       } catch (MissingResourceException var13) {
  330.       }
  331.  
  332.       Object var9 = null;
  333.       Object var10 = null;
  334.       String var14;
  335.       String[] var15;
  336.       if (var3.length() != 0) {
  337.          var14 = var3;
  338.          if (var4.length() != 0) {
  339.             var15 = new String[var5.length + 1];
  340.             System.arraycopy(var5, 0, var15, 1, var5.length);
  341.             var15[0] = var4;
  342.          } else {
  343.             var15 = var5;
  344.          }
  345.       } else {
  346.          if (var4.length() == 0) {
  347.             return formatList(var5, var7, var8);
  348.          }
  349.  
  350.          var14 = var4;
  351.          var15 = var5;
  352.       }
  353.  
  354.       Object[] var11 = new Object[]{new Integer(var15.length != 0 ? 2 : 1), var14, var15.length != 0 ? formatList(var15, var7, var8) : null};
  355.       if (var6 != null) {
  356.          return (new MessageFormat(var6)).format(var11);
  357.       } else {
  358.          StringBuilder var12 = new StringBuilder();
  359.          var12.append((String)var11[1]);
  360.          if (var11.length > 2) {
  361.             var12.append(" (");
  362.             var12.append((String)var11[2]);
  363.             var12.append(')');
  364.          }
  365.  
  366.          return var12.toString();
  367.       }
  368.    }
  369.  
  370.    public Object clone() {
  371.       try {
  372.          Locale var1 = (Locale)super.clone();
  373.          return var1;
  374.       } catch (CloneNotSupportedException var2) {
  375.          throw new InternalError();
  376.       }
  377.    }
  378.  
  379.    public int hashCode() {
  380.       int var1 = this.hashCodeValue;
  381.       if (var1 == 0) {
  382.          var1 = this.language.hashCode() << 8 ^ this.country.hashCode() ^ this.variant.hashCode() << 4;
  383.          this.hashCodeValue = var1;
  384.       }
  385.  
  386.       return var1;
  387.    }
  388.  
  389.    public boolean equals(Object var1) {
  390.       if (this == var1) {
  391.          return true;
  392.       } else if (!(var1 instanceof Locale)) {
  393.          return false;
  394.       } else {
  395.          Locale var2 = (Locale)var1;
  396.          return this.language == var2.language && this.country == var2.country && this.variant == var2.variant;
  397.       }
  398.    }
  399.  
  400.    private String[] getDisplayVariantArray(OpenListResourceBundle var1, Locale var2) {
  401.       StringTokenizer var3 = new StringTokenizer(this.variant, "_");
  402.       String[] var4 = new String[var3.countTokens()];
  403.  
  404.       for(int var5 = 0; var5 < var4.length; ++var5) {
  405.          var4[var5] = this.getDisplayString(var3.nextToken(), var2, 2);
  406.       }
  407.  
  408.       return var4;
  409.    }
  410.  
  411.    private static String formatList(String[] var0, String var1, String var2) {
  412.       if (var1 != null && var2 != null) {
  413.          if (var0.length > 3) {
  414.             MessageFormat var5 = new MessageFormat(var2);
  415.             var0 = composeList(var5, var0);
  416.          }
  417.  
  418.          Object[] var6 = new Object[var0.length + 1];
  419.          System.arraycopy(var0, 0, var6, 1, var0.length);
  420.          var6[0] = new Integer(var0.length);
  421.          MessageFormat var7 = new MessageFormat(var1);
  422.          return var7.format(var6);
  423.       } else {
  424.          StringBuffer var3 = new StringBuffer();
  425.  
  426.          for(int var4 = 0; var4 < var0.length; ++var4) {
  427.             if (var4 > 0) {
  428.                var3.append(',');
  429.             }
  430.  
  431.             var3.append(var0[var4]);
  432.          }
  433.  
  434.          return var3.toString();
  435.       }
  436.    }
  437.  
  438.    private static String[] composeList(MessageFormat var0, String[] var1) {
  439.       if (var1.length <= 3) {
  440.          return var1;
  441.       } else {
  442.          String[] var2 = new String[]{var1[0], var1[1]};
  443.          String var3 = var0.format(var2);
  444.          String[] var4 = new String[var1.length - 1];
  445.          System.arraycopy(var1, 2, var4, 1, var4.length - 1);
  446.          var4[0] = var3;
  447.          return composeList(var0, var4);
  448.       }
  449.    }
  450.  
  451.    private Object readResolve() throws ObjectStreamException {
  452.       return getInstance(this.language, this.country, this.variant);
  453.    }
  454.  
  455.    private String toLowerCase(String var1) {
  456.       char[] var2 = new char[var1.length()];
  457.  
  458.       for(int var3 = 0; var3 < var2.length; ++var3) {
  459.          var2[var3] = Character.toLowerCase(var1.charAt(var3));
  460.       }
  461.  
  462.       return new String(var2);
  463.    }
  464.  
  465.    private String toUpperCase(String var1) {
  466.       char[] var2 = new char[var1.length()];
  467.  
  468.       for(int var3 = 0; var3 < var2.length; ++var3) {
  469.          var2[var3] = Character.toUpperCase(var1.charAt(var3));
  470.       }
  471.  
  472.       return new String(var2);
  473.    }
  474.  
  475.    private String convertOldISOCodes(String var1) {
  476.       var1 = this.toLowerCase(var1).intern();
  477.       if (var1 == "he") {
  478.          return "iw";
  479.       } else if (var1 == "yi") {
  480.          return "ji";
  481.       } else {
  482.          return var1 == "id" ? "in" : var1;
  483.       }
  484.    }
  485.  
  486.    static {
  487.       CHINA = SIMPLIFIED_CHINESE;
  488.       PRC = SIMPLIFIED_CHINESE;
  489.       TAIWAN = TRADITIONAL_CHINESE;
  490.       field_0 = createSingleton("en_GB_", "en", "GB");
  491.       field_1 = createSingleton("en_US_", "en", "US");
  492.       CANADA = createSingleton("en_CA_", "en", "CA");
  493.       CANADA_FRENCH = createSingleton("fr_CA_", "fr", "CA");
  494.       ROOT = createSingleton("__", "", "");
  495.       defaultLocale = null;
  496.       isoLanguages = null;
  497.       isoCountries = null;
  498.    }
  499. }
  500.