Esempio n. 1
0
 public void TestPaperSize()
 {
     for (int i = 0; i < availableLocales.Length; i++)
     {
         ULocale locale = availableLocales[i];
         LocaleData.PaperSize paperSize = IBM.ICU.Util.LocaleData.GetPaperSize(locale);
         // skip testing of "in" .. deprecated code for Indonesian
         String lang = locale.GetLanguage();
         if (lang.Equals("in"))
         {
             continue;
         }
         if (locale.ToString().IndexOf("_US") >= 0)
         {
             if (paperSize.GetHeight() != 279 || paperSize.GetWidth() != 216)
             {
                 Errln("PaperSize did not return the expected value for locale "
                       + locale
                       + " Expected height: 279 width: 216."
                       + " Got height: "
                       + paperSize.GetHeight()
                       + " width: " + paperSize.GetWidth());
             }
             else
             {
                 Logln("PaperSize returned the expected values for locale "
                       + locale);
             }
         }
         else
         {
             if (paperSize.GetHeight() != 297 || paperSize.GetWidth() != 210)
             {
                 Errln("PaperSize did not return the expected value for locale "
                       + locale
                       + " Expected height: 297 width: 210."
                       + " Got height: "
                       + paperSize.GetHeight()
                       + " width: " + paperSize.GetWidth());
             }
             else
             {
                 Logln("PaperSize returned the expected values for locale "
                       + locale);
             }
         }
     }
 }
Esempio n. 2
0
        public void TestDisplayName()
        {
            ULocale defLoc = IBM.ICU.Util.ULocale.GetDefault();

            IBM.ICU.Util.ULocale.SetDefault(_DEFAULT_LOCALE);
            for (int i = 0; i < _LOCALE_NUMBER; i++)
            {
                ULocale oldLoc = _LOCALES[i][0];
                ULocale newLoc = _LOCALES[i][1];

                for (int j = 0; j < available.Length; j++)
                {
                    String oldCountry = oldLoc.GetDisplayCountry(available[j]);
                    String newCountry = newLoc.GetDisplayCountry(available[j]);
                    String oldLang    = oldLoc.GetDisplayLanguage(available[j]);
                    String newLang    = newLoc.GetDisplayLanguage(available[j]);

                    // is there display name for the current country ID
                    if (!newCountry.Equals(newLoc.GetCountry()))
                    {
                        if (!oldCountry.Equals(newCountry))
                        {
                            Errln("getCountry() failed for " + oldLoc
                                  + " oldCountry= " + IBM.ICU.Charset.TestFmwk.Prettify(oldCountry)
                                  + " newCountry = " + IBM.ICU.Charset.TestFmwk.Prettify(newCountry)
                                  + " in display locale "
                                  + available[j].ToString());
                        }
                    }
                    // there is a display name for the current lang ID
                    if (!newLang.Equals(newLoc.GetLanguage()))
                    {
                        if (!oldLang.Equals(newLang))
                        {
                            Errln("getLanguage() failed for " + oldLoc
                                  + " oldLang = " + IBM.ICU.Charset.TestFmwk.Prettify(oldLang)
                                  + " newLang = " + IBM.ICU.Charset.TestFmwk.Prettify(newLang)
                                  + " in display locale "
                                  + available[j].ToString());
                        }
                    }
                }
            }
            IBM.ICU.Util.ULocale.SetDefault(defLoc);
        }
Esempio n. 3
0
 public void TestMeasurementSystem()
 {
     for (int i = 0; i < availableLocales.Length; i++)
     {
         ULocale locale = availableLocales[i];
         LocaleData.MeasurementSystem ms = IBM.ICU.Util.LocaleData
                                           .GetMeasurementSystem(locale);
         // skip testing of "in" .. deprecated code for Indonesian
         String lang = locale.GetLanguage();
         if (lang.Equals("in"))
         {
             continue;
         }
         if (locale.ToString().IndexOf("_US") >= 0)
         {
             if (ms == IBM.ICU.Util.LocaleData.MeasurementSystem.US)
             {
                 Logln("Got the expected measurement system for locale: "
                       + locale);
             }
             else
             {
                 Errln("Did not get the expected measurement system for locale: "
                       + locale);
             }
         }
         else
         {
             if (ms == IBM.ICU.Util.LocaleData.MeasurementSystem.SI)
             {
                 Logln("Got the expected measurement system for locale: "
                       + locale);
             }
             else
             {
                 Errln("Did not get the expected measurement system for locale: "
                       + locale);
             }
         }
     }
 }
Esempio n. 4
0
        /// <summary>
        /// Constructs a new Locale using the specified language, country, and
        /// variant codes.
        /// </summary>
        ///
        /// <param name="language"></param>
        /// <param name="country"></param>
        /// <param name="variant"></param>
        /// <exception cref="NullPointerException">if <c>language</c>, <c>country</c> or<c>variant</c> is <c>null</c>.</exception>
        public Locale(String language, String country, String variant)
        {
            if (language == null || country == null || variant == null)
            {
                throw new NullReferenceException();
            }
            if (language.Length == 0 && country.Length == 0)
            {
                languageCode = "";
                countryCode  = "";
                variantCode  = variant;
                return;
            }
            this.uLocale = new ULocale(language, country, variant);
            languageCode = uLocale.GetLanguage();
            // Map new language codes to the obsolete language
            // codes so the correct resource bundles will be used.
            if (languageCode.Equals("he"))
            {                        //$NON-NLS-1$
                languageCode = "iw"; //$NON-NLS-1$
            }
            else if (languageCode.Equals("id"))
            {                        //$NON-NLS-1$
                languageCode = "in"; //$NON-NLS-1$
            }
            else if (languageCode.Equals("yi"))
            {                        //$NON-NLS-1$
                languageCode = "ji"; //$NON-NLS-1$
            }

            // countryCode is defined in ASCII character set
            countryCode = (country.Length != 0) ? uLocale.GetCountry() : "";

            // Work around for be compatible with RI
            variantCode = variant;
        }
Esempio n. 5
0
        public override IList <UiListItem> GetUiListCompareWholeItems(ISet <ULocale> localeSet, IComparer <UiListItem> comparer)
        {
            DisplayContext capContext = GetContext(DisplayContextType.Capitalization);

            List <UiListItem> result = new List <UiListItem>();
            IDictionary <ULocale, ISet <ULocale> > baseToLocales = new Dictionary <ULocale, ISet <ULocale> >();

            ULocale.Builder builder = new ULocale.Builder();
            foreach (ULocale locOriginal in localeSet)
            {
                builder.SetLocale(locOriginal); // verify well-formed. We do this here so that we consistently throw exception
                ULocale        loc     = ULocale.AddLikelySubtags(locOriginal);
                ULocale        @base   = new ULocale(loc.GetLanguage());
                ISet <ULocale> locales = baseToLocales.Get(@base);
                if (locales == null)
                {
                    baseToLocales[@base] = locales = new HashSet <ULocale>();
                }
                locales.Add(loc);
            }
            foreach (var entry in baseToLocales)
            {
                ULocale        @base  = entry.Key;
                ISet <ULocale> values = entry.Value;
                if (values.Count == 1)
                {
                    ULocale locale = values.First();
                    result.Add(NewRow(ULocale.MinimizeSubtags(locale, ULocale.Minimize.FAVOR_SCRIPT), capContext));
                }
                else
                {
                    ISet <string> scripts = new HashSet <string>();
                    ISet <string> regions = new HashSet <string>();
                    // need the follow two steps to make sure that unusual scripts or regions are displayed
                    ULocale maxBase = ULocale.AddLikelySubtags(@base);
                    scripts.Add(maxBase.GetScript());
                    regions.Add(maxBase.GetCountry());
                    foreach (ULocale locale in values)
                    {
                        scripts.Add(locale.GetScript());
                        regions.Add(locale.GetCountry());
                    }
                    bool hasScripts = scripts.Count > 1;
                    bool hasRegions = regions.Count > 1;
                    foreach (ULocale locale in values)
                    {
                        ULocale.Builder modified = builder.SetLocale(locale);
                        if (!hasScripts)
                        {
                            modified.SetScript("");
                        }
                        if (!hasRegions)
                        {
                            modified.SetRegion("");
                        }
                        result.Add(NewRow(modified.Build(), capContext));
                    }
                }
            }
            result.Sort(comparer);
            return(result);
        }
Esempio n. 6
0
        // TODO: implement use of capitalization
        private string LocaleDisplayNameInternal(ULocale locale)
        {
            // lang
            // lang (script, country, variant, keyword=value, ...)
            // script, country, variant, keyword=value, ...

            string resultName = null;

            string lang = locale.GetLanguage();

            // Empty basename indicates root locale (keywords are ignored for this).
            // Our data uses 'root' to access display names for the root locale in the
            // "Languages" table.
            if (locale.GetBaseName().Length == 0)
            {
                lang = "root";
            }
            string script  = locale.GetScript();
            string country = locale.GetCountry();
            string variant = locale.GetVariant();

            bool hasScript  = script.Length > 0;
            bool hasCountry = country.Length > 0;
            bool hasVariant = variant.Length > 0;

            // always have a value for lang
            if (dialectHandling == DialectHandling.DIALECT_NAMES)
            {
                do
                { // loop construct is so we can break early out of search
                    if (hasScript && hasCountry)
                    {
                        string langScriptCountry = lang + '_' + script + '_' + country;
                        string result            = LocaleIdName(langScriptCountry);
                        if (result != null && !result.Equals(langScriptCountry))
                        {
                            resultName = result;
                            hasScript  = false;
                            hasCountry = false;
                            break;
                        }
                    }
                    if (hasScript)
                    {
                        string langScript = lang + '_' + script;
                        string result     = LocaleIdName(langScript);
                        if (result != null && !result.Equals(langScript))
                        {
                            resultName = result;
                            hasScript  = false;
                            break;
                        }
                    }
                    if (hasCountry)
                    {
                        string langCountry = lang + '_' + country;
                        string result      = LocaleIdName(langCountry);
                        if (result != null && !result.Equals(langCountry))
                        {
                            resultName = result;
                            hasCountry = false;
                            break;
                        }
                    }
                } while (false);
            }

            if (resultName == null)
            {
                string result = LocaleIdName(lang);
                if (result == null)
                {
                    return(null);
                }
                resultName = result
                             .Replace(formatOpenParen, formatReplaceOpenParen)
                             .Replace(formatCloseParen, formatReplaceCloseParen);
            }

            StringBuilder buf = new StringBuilder();

            if (hasScript)
            {
                // first element, don't need appendWithSep
                string result = ScriptDisplayNameInContext(script, true);
                if (result == null)
                {
                    return(null);
                }
                buf.Append(result
                           .Replace(formatOpenParen, formatReplaceOpenParen)
                           .Replace(formatCloseParen, formatReplaceCloseParen));
            }
            if (hasCountry)
            {
                string result = RegionDisplayName(country, true);
                if (result == null)
                {
                    return(null);
                }
                AppendWithSep(result
                              .Replace(formatOpenParen, formatReplaceOpenParen)
                              .Replace(formatCloseParen, formatReplaceCloseParen), buf);
            }
            if (hasVariant)
            {
                string result = VariantDisplayName(variant, true);
                if (result == null)
                {
                    return(null);
                }
                AppendWithSep(result
                              .Replace(formatOpenParen, formatReplaceOpenParen)
                              .Replace(formatCloseParen, formatReplaceCloseParen), buf);
            }

            using (IEnumerator <string> keys = locale.GetKeywords())
            {
                if (keys != null)
                {
                    while (keys.MoveNext())
                    {
                        string key            = keys.Current;
                        string value          = locale.GetKeywordValue(key);
                        string keyDisplayName = KeyDisplayName(key, true);
                        if (keyDisplayName == null)
                        {
                            return(null);
                        }
                        keyDisplayName = keyDisplayName
                                         .Replace(formatOpenParen, formatReplaceOpenParen)
                                         .Replace(formatCloseParen, formatReplaceCloseParen);
                        string valueDisplayName = KeyValueDisplayName(key, value, true);
                        if (valueDisplayName == null)
                        {
                            return(null);
                        }
                        valueDisplayName = valueDisplayName
                                           .Replace(formatOpenParen, formatReplaceOpenParen)
                                           .Replace(formatCloseParen, formatReplaceCloseParen);
                        if (!valueDisplayName.Equals(value))
                        {
                            AppendWithSep(valueDisplayName, buf);
                        }
                        else if (!key.Equals(keyDisplayName))
                        {
                            string keyValue = SimpleFormatterImpl.FormatCompiledPattern(
                                keyTypeFormat, keyDisplayName, valueDisplayName);
                            AppendWithSep(keyValue, buf);
                        }
                        else
                        {
                            AppendWithSep(keyDisplayName, buf)
                            .Append("=")
                            .Append(valueDisplayName);
                        }
                    }
                }
            }
            string resultRemainder = null;

            if (buf.Length > 0)
            {
                resultRemainder = buf.ToString();
            }

            if (resultRemainder != null)
            {
                resultName = SimpleFormatterImpl.FormatCompiledPattern(
                    format, resultName, resultRemainder);
            }

            return(AdjustForUsageAndContext(CapitalizationContextUsage.LANGUAGE, resultName));
        }
Esempio n. 7
0
        public void TestScripts()
        {
            // get a couple of characters of each script for testing

            StringBuffer testBuffer = new StringBuffer();

            for (int script = 0; script < UScript.CodeLimit; ++script)
            {
                UnicodeSet test  = new UnicodeSet().ApplyPropertyAlias("script", UScript.GetName(script));
                int        count = Math.Min(20, test.Count);
                for (int i = 0; i < count; ++i)
                {
                    testBuffer.Append(UTF16.ValueOf(test[i]));
                }
            }
            {
                String test = testBuffer.ToString();
                Logln("Test line: " + test);

                int  inclusion = TestFmwk.GetExhaustiveness();
                bool testedUnavailableScript = false;

                for (int script = 0; script < UScript.CodeLimit; ++script)
                {
                    if (script == UScript.Common || script == UScript.Inherited)
                    {
                        continue;
                    }
                    // if the inclusion rate is not 10, skip all but a small number of items.
                    // Make sure, however, that we test at least one unavailable script
                    if (inclusion < 10 && script != UScript.Latin &&
                        script != UScript.Han &&
                        script != UScript.Hiragana &&
                        testedUnavailableScript
                        )
                    {
                        continue;
                    }

                    String  scriptName = UScript.GetName(script); // long name
                    ULocale locale     = new ULocale(scriptName);
                    if (locale.GetLanguage().Equals("new") || locale.GetLanguage().Equals("pau"))
                    {
                        if (logKnownIssue("11171",
                                          "long script name loosely looks like a locale ID with a known likely script"))
                        {
                            continue;
                        }
                    }
                    Transliterator t;
                    try
                    {
                        t = Transliterator.GetInstance("any-" + scriptName);
                    }
                    catch (Exception e)
                    {
                        testedUnavailableScript = true;
                        Logln("Skipping unavailable: " + scriptName);
                        continue; // we don't handle all scripts
                    }
                    Logln("Checking: " + scriptName);
                    if (t != null)
                    {
                        t.Transform(test);                                 // just verify we don't crash
                    }
                    String shortScriptName = UScript.GetShortName(script); // 4-letter script code
                    try
                    {
                        t = Transliterator.GetInstance("any-" + shortScriptName);
                    }
                    catch (Exception e)
                    {
                        Errln("Transliterator.GetInstance() worked for \"any-" + scriptName +
                              "\" but not for \"any-" + shortScriptName + '\"');
                    }
                    t.Transform(test); // just verify we don't crash
                }
            }
        }
Esempio n. 8
0
 public static int GetCaseLocale(ULocale locale)
 {
     return(GetCaseLocale(locale.GetLanguage()));
 }