// Constructors
 public CultureAndRegionInfoBuilder(string cultureName, CultureAndRegionModifiers flags)
 {
 }
Esempio n. 2
0
        /**
         * Method to create a new culture either by mixing or inheriting from the
         * InvariantCulture
         */
        public void GetNewCultureInfo(NumberFormatInfo numberFormat, DateTimeFormatInfo dateFormat,
                                      string locale, string name)
        {
            try
            {
                CultureInfo ci = new CultureInfo(locale);
                RegionInfo  ri;
                //In case the locale name is empty as is for Invariant culture
                if (locale.Length == 0)
                {
                    ri = RegionInfo.CurrentRegion;
                }
                else
                {
                    ri = new RegionInfo(locale);
                }

                // See if we're neutral
                CultureAndRegionModifiers mods = CultureAndRegionModifiers.None;
                if (name.IndexOf('-') < 0)
                {
                    mods |= CultureAndRegionModifiers.Neutral;
                }

                // See if we already have one
                try
                {
                    CultureInfo test = CultureInfo.GetCultureInfo(name);
                    mods |= CultureAndRegionModifiers.Replacement;
                }
                catch (System.ArgumentException)
                {
                    // name doesn't exist (yet)
                }

                //Use the builder to register the culture
                CultureAndRegionInfoBuilder cib = new CultureAndRegionInfoBuilder(
                    name, mods);

                cib.LoadDataFromCultureInfo(ci);
                cib.LoadDataFromRegionInfo(ri);

                cib.NumberFormat            = numberFormat;
                cib.GregorianDateTimeFormat = dateFormat;
                cib.IetfLanguageTag         = name;
                cib.Register();

                //Add the new culture using the DisplayCulture
                Add(name);

                MessageBox.Show(Constants.SuccessMessage);
            }
            catch (System.IO.IOException)
            {
                //The .nlp file already exists
                MessageBox.Show(Constants.ErrorFileFound);
            }
            catch (System.ArgumentOutOfRangeException ex)
            {
                MessageBox.Show(ex.ToString());
            }
        }
Esempio n. 3
0
        /// <summary>
        /// Creates a CultureAndRegionInfoBuilder object for the NCLDR culture
        /// </summary>
        /// <param name="cldrCultureName">The name of the CLDR culture from which to create the .NET culture</param>
        /// <param name="dotNetCultureName">The name of the .NET custom culture to create</param>
        /// <returns>A CultureAndRegionInfoBuilder object for the NCLDR culture</returns>
        public static CultureAndRegionInfoBuilder CreateNCldrCultureAndRegionInfoBuilder(string cldrCultureName, string dotNetCultureName)
        {
            Culture culture = Culture.GetCulture(cldrCultureName);

            CultureAndRegionModifiers cultureAndRegionModifiers =
                culture.IsNeutralCulture ? CultureAndRegionModifiers.Neutral : CultureAndRegionModifiers.None;

            CultureAndRegionInfoBuilder builder = new CultureAndRegionInfoBuilder(dotNetCultureName, cultureAndRegionModifiers);

            CultureInfo parentCultureInfo = GetParentCultureInfo(culture);

            builder.Parent = parentCultureInfo;

            if (string.IsNullOrEmpty(culture.EnglishName))
            {
                builder.CultureEnglishName = culture.Identity.CultureName;
            }
            else
            {
                builder.CultureEnglishName = culture.EnglishName;
            }

            if (string.IsNullOrEmpty(culture.NativeName) && string.IsNullOrEmpty(culture.EnglishName))
            {
                builder.CultureNativeName = culture.Identity.CultureName;
            }
            else if (string.IsNullOrEmpty(culture.NativeName))
            {
                builder.CultureNativeName = culture.EnglishName;
            }
            else
            {
                builder.CultureNativeName = culture.NativeName;
            }

            builder.TwoLetterISOLanguageName = culture.Identity.Language.Id;

            // CLDR does not have data for ThreeLetterISOLanguageName but one must be assigned for the culture to be valid
            builder.ThreeLetterISOLanguageName = culture.Identity.Language.Id;

            // CLDR does not have data for ThreeLetterWindowsLanguageName but one must be assigned for the culture to be valid
            builder.ThreeLetterWindowsLanguageName = culture.Identity.Language.Id;

            // The CultureAndRegionInfoBuilder requires dummy values for these properties
            // even though there is no region or currency values
            builder.RegionEnglishName            = "xxx";
            builder.RegionNativeName             = "xxx";
            builder.ThreeLetterISORegionName     = "xxx";
            builder.ThreeLetterWindowsRegionName = "xxx";
            builder.TwoLetterISORegionName       = "xx";
            builder.ISOCurrencySymbol            = "xx";
            builder.CurrencyEnglishName          = "xxx";
            builder.CurrencyNativeName           = "xxx";

            if (culture.Identity.Region != null)
            {
                Region region = culture.Identity.Region;
                builder.RegionEnglishName = region.EnglishName;

                string regionNativeName = region.DisplayName(culture.Identity.Language.Id);
                if (string.IsNullOrEmpty(regionNativeName))
                {
                    builder.RegionNativeName = region.EnglishName;
                }
                else
                {
                    builder.RegionNativeName = regionNativeName;
                }

                RegionCode regionCode = RegionExtensions.GetRegionCode(region.Id);
                if (regionCode != null && regionCode.Alpha3 != null)
                {
                    builder.ThreeLetterISORegionName = regionCode.Alpha3;
                }
                else
                {
                    builder.ThreeLetterISORegionName = region.Id;
                }

                // CLDR does not have data for ThreeLetterWindowsRegionName but one must be assigned for the culture to be valid
                builder.ThreeLetterWindowsRegionName = region.Id;
                builder.TwoLetterISORegionName       = region.Id;

                builder.IsMetric = RegionExtensions.GetMeasurementSystem(region.Id).IsMetric;
            }
            else
            {
                builder.IsMetric = RegionExtensions.GetMeasurementSystem(NCldr.RegionIdForTheWorld).IsMetric;
            }

            // CLDR does not have data for KeyboardLayoutId or GeoId
            builder.IetfLanguageTag = cldrCultureName;

            builder.GregorianDateTimeFormat = CreateDateTimeFormatInfo(culture);
            builder.AvailableCalendars      = GetAvailableCalendars(culture);

            builder.NumberFormat = CreateNumberFormatInfo(culture);

            if (culture.Numbers != null &&
                culture.Numbers.CurrencyDisplayNameSets != null &&
                culture.Numbers.CurrentCurrencyPeriod != null)
            {
                string currencyName = culture.Numbers.CurrentCurrencyPeriod.Id;
                if (!string.IsNullOrEmpty(currencyName))
                {
                    builder.ISOCurrencySymbol = currencyName;

                    builder.CurrencyEnglishName = CultureExtensions.GetCurrencyDisplayName(currencyName, "en");

                    string currencyNativeName = CultureExtensions.GetCurrencyDisplayName(currencyName, culture.Identity.Language.Id);
                    builder.CurrencyNativeName = currencyNativeName == null ? builder.CurrencyEnglishName : currencyNativeName;
                }
            }

            builder.TextInfo    = parentCultureInfo.TextInfo;
            builder.CompareInfo = parentCultureInfo.CompareInfo;

            return(builder);
        }
Esempio n. 4
0
        /**
         * Method to create a new culture instance by inheriting from
         * a culture
         */
        public void NewCultureInstance(string locale, string name)
        {
            try
            {
                CultureInfo ci = new CultureInfo(locale);
                RegionInfo  ri;
                //In case the locale name is empty as is for Invariant culture
                if (locale.Length == 0)
                {
                    ri = RegionInfo.CurrentRegion;
                }
                else
                {
                    ri = new RegionInfo(locale);
                }
                //Split the name to language and region
                string[] lang = ci.Name.Split(Constants.CharHyphen);

                // See if we're neutral
                CultureAndRegionModifiers mods = CultureAndRegionModifiers.None;
                if (name.IndexOf('-') < 0)
                {
                    mods |= CultureAndRegionModifiers.Neutral;
                }

                // See if we already have one
                try
                {
                    CultureInfo test = CultureInfo.GetCultureInfo(name);
                    mods |= CultureAndRegionModifiers.Replacement;
                }
                catch (System.ArgumentException)
                {
                    // name doesn't exist (yet)
                }

                //Use the builder to register the culture
                CultureAndRegionInfoBuilder cib = new CultureAndRegionInfoBuilder(
                    name, mods);

                cib.LoadDataFromCultureInfo(ci);
                if ((mods & CultureAndRegionModifiers.Neutral) == 0)
                {
                    cib.LoadDataFromRegionInfo(ri);
                }
                cib.IetfLanguageTag = name;
                cib.Register();

                //Add the new culture using the DisplayCulture
                Add(name);
                MessageBox.Show(Constants.SuccessMessage);
            }
            catch (System.ArgumentOutOfRangeException ex)
            {
                MessageBox.Show(ex.ToString());
            } catch (System.InvalidOperationException) {
                MessageBox.Show("That culture already exists. Please add a NEW instance of a culture");
            } catch (System.ArgumentException) {
                MessageBox.Show("That culture already exists. Please add a NEW instance of a culture");
            }
        }
	// Constructors
	public CultureAndRegionInfoBuilder(string cultureName, CultureAndRegionModifiers flags) {}