/// <summary> /// Load the i-th bundle and implement wildcard resolution. /// </summary> /// private void Load(int i) { if (bundles[i] == null) { bool tryWildcard = false; try { bundles[i] = ResourceBundle.GetBundle(baseNames[i], locale); if (bundles[i].GetLocale().Equals(locale)) { return; } if (locale.GetCountry().Length != 0 && i != bundles.Length - 1) { tryWildcard = true; } } catch (MissingManifestResourceException e) { if (i == bundles.Length - 1) { throw e; } tryWildcard = true; } if (tryWildcard) { Locale wildcard = new Locale("xx", locale.GetCountry(), locale.GetLanguage()); try { bundles[i] = ResourceBundle.GetBundle(baseNames[i], wildcard); } catch (MissingManifestResourceException e_0) { if (bundles[i] == null) { throw e_0; } } } } }
/* * Convenience method that calls canonicalLocaleString(String) with * locale.toString(); */ /* * public static String canonicalLocaleString(Locale locale) { return * canonicalLocaleString(locale.toString()); } */ /* * You'd think that Locale canonicalizes, since it munges the renamed * languages, but it doesn't quite. It forces the region to be upper case * but doesn't do anything about the language or variant. Our canonical form * is 'lower_UPPER_UPPER'. */ /* * public static String canonicalLocaleString(String id) { if (id != null) { * int x = id.indexOf("_"); if (x == -1) { id = * id.toLowerCase(Locale.ENGLISH); } else { StringBuffer buf = new * StringBuffer(); buf.append(id.substring(0, * x).toLowerCase(Locale.ENGLISH)); * buf.append(id.substring(x).toUpperCase(Locale.ENGLISH)); * * int len = buf.length(); int n = len; while (--n >= 0 && buf.charAt(n) == * '_') { } if (++n != len) { buf.delete(n, len); } id = buf.toString(); } } * return id; } */ /// <summary> /// Fallback from the given locale name by removing the rightmost _-delimited /// element. If there is none, return the root locale ("", "", ""). If this /// is the root locale, return null. NOTE: The string "root" is not /// recognized; do not use it. /// </summary> /// /// <returns>a new Locale that is a fallback from the given locale, or null.</returns> public static Locale Fallback(Locale loc) { // Split the locale into parts and remove the rightmost part String[] parts = new String[] { loc.GetLanguage(), loc.GetCountry(), loc.GetVariant() }; int i; for (i = 2; i >= 0; --i) { if (parts[i].Length != 0) { parts[i] = ""; break; } } if (i < 0) { return(null); // All parts were empty } return(new Locale(parts[0], parts[1], parts[2])); }