Ejemplo n.º 1
0
        public void GivenLocale_WhenDeriving_ThenNameIsSet()
        {
            var locale = new LocaleBuilder(this.DatabaseSession)
                .WithLanguage(new Languages(this.DatabaseSession).FindBy(Languages.Meta.IsoCode, "en"))
                .WithCountry(new Countries(this.DatabaseSession).FindBy(Countries.Meta.IsoCode, "BE"))
                .Build();

            this.DatabaseSession.Derive(true);

            Assert.AreEqual("en-BE", locale.Name);
        }
Ejemplo n.º 2
0
        public void GivenLocale_WhenDeriving_ThenNameIsSet()
        {
            var locale = new LocaleBuilder(this.Session)
                         .WithLanguage(new Languages(this.Session).FindBy(M.Language.IsoCode, "en"))
                         .WithCountry(new Countries(this.Session).FindBy(M.Country.IsoCode, "BE"))
                         .Build();

            this.Session.Derive(true);

            Assert.Equal("en-BE", locale.Name);
        }
Ejemplo n.º 3
0
        public void GivenLocaleWhenValidatingThenRequiredRelationsMustExist()
        {
            var dutch = new Languages(this.DatabaseSession).LanguageByCode["nl"];
            var netherlands = new Countries(this.DatabaseSession).CountryByIsoCode["NL"];

            var builder = new LocaleBuilder(this.DatabaseSession);
            builder.Build();

            Assert.IsTrue(this.DatabaseSession.Derive().HasErrors);

            builder.WithLanguage(dutch).Build();

            Assert.IsTrue(this.DatabaseSession.Derive().HasErrors);

            builder.WithCountry(netherlands).Build();

            Assert.IsFalse(this.DatabaseSession.Derive().HasErrors);
        }
Ejemplo n.º 4
0
        public void GivenLocaleWhenValidatingThenRequiredRelationsMustExist()
        {
            var dutch       = new Languages(this.Session).LanguageByCode["nl"];
            var netherlands = new Countries(this.Session).CountryByIsoCode["NL"];

            var builder = new LocaleBuilder(this.Session);

            builder.Build();

            Assert.True(this.Session.Derive(false).HasErrors);

            builder.WithLanguage(dutch).Build();

            Assert.True(this.Session.Derive(false).HasErrors);

            builder.WithCountry(netherlands).Build();

            Assert.False(this.Session.Derive(false).HasErrors);
        }
Ejemplo n.º 5
0
        public void GivenLocale_WhenDeriving_ThenRequiredRelationsMustExist()
        {
            var builder = new LocaleBuilder(this.DatabaseSession);
            builder.Build();

            Assert.IsTrue(this.DatabaseSession.Derive().HasErrors);

            this.DatabaseSession.Rollback();

            builder.WithLanguage(new Languages(this.DatabaseSession).FindBy(Languages.Meta.IsoCode, "en"));
            builder.Build();

            Assert.IsTrue(this.DatabaseSession.Derive().HasErrors);

            this.DatabaseSession.Rollback();

            builder.WithCountry(new Countries(this.DatabaseSession).FindBy(Countries.Meta.IsoCode, "BE"));
            builder.Build();

            Assert.IsFalse(this.DatabaseSession.Derive().HasErrors);
        }
Ejemplo n.º 6
0
        public void GivenLocale_WhenDeriving_ThenRequiredRelationsMustExist()
        {
            var builder = new LocaleBuilder(this.Session);

            builder.Build();

            Assert.True(this.Session.Derive(false).HasErrors);

            this.Session.Rollback();

            builder.WithLanguage(new Languages(this.Session).FindBy(M.Language.IsoCode, "en"));
            builder.Build();

            Assert.True(this.Session.Derive(false).HasErrors);

            this.Session.Rollback();

            builder.WithCountry(new Countries(this.Session).FindBy(M.Country.IsoCode, "BE"));
            builder.Build();

            Assert.False(this.Session.Derive(false).HasErrors);
        }
Ejemplo n.º 7
0
        public void Sync()
        {
            var englishNameByCountry = new Dictionary<Country, string>();
            var englishNameByCurrency = new Dictionary<Currency, string>();
            var englishNameByLanguage = new Dictionary<Language, string>();

            var countryByIsoCode = new Dictionary<string, Country>();
            foreach (Country country in new Countries(this.Session).Extent())
            {
                countryByIsoCode.Add(country.IsoCode, country);
            }

            var languageByIsoCode = new Dictionary<string, Language>();
            foreach (Language language in new Languages(this.Session).Extent())
            {
                languageByIsoCode.Add(language.IsoCode, language);
            }

            var currencyByIsoCode = new Dictionary<string, Currency>();
            foreach (Currency currency in new Currencies(this.Session).Extent())
            {
                currencyByIsoCode.Add(currency.IsoCode, currency);
            }

            var localeByName = new Dictionary<string, Locale>();
            foreach (Locale locale in new Locales(this.Session).Extent())
            {
                localeByName.Add(locale.Name, locale);
            }

            foreach (var cultureInfo in CultureInfo.GetCultures(CultureTypes.SpecificCultures))
            {
                if (cultureInfo.LCID != 127)
                {
                    var languageIsoCode = cultureInfo.TwoLetterISOLanguageName.ToLower();
                    Language language;
                    if (!languageByIsoCode.TryGetValue(languageIsoCode, out language))
                    {
                        language = new LanguageBuilder(this.Session)
                            .WithIsoCode(languageIsoCode)
                            .Build();

                        languageByIsoCode.Add(languageIsoCode, language);
                        englishNameByLanguage.Add(language, cultureInfo.Parent.EnglishName);
                    }

                    Country country = null;
                    var regionInfo = new RegionInfo(cultureInfo.LCID);

                    // Should be upper, but just in case ...
                    var countryIsoCode = regionInfo.TwoLetterISORegionName.ToUpper();

                    // sometimes a 2 letter code is a 3 digit code ...
                    if (countryIsoCode.Length == 2)
                    {
                        if (!countryByIsoCode.TryGetValue(countryIsoCode, out country))
                        {
                            country = new CountryBuilder(this.Session).WithIsoCode(countryIsoCode).Build();

                            englishNameByCountry.Add(country, regionInfo.EnglishName);
                            countryByIsoCode.Add(countryIsoCode, country);
                        }

                        var currencyIsoCode = regionInfo.ISOCurrencySymbol.ToUpper();
                        Currency currency;
                        if (!currencyByIsoCode.TryGetValue(currencyIsoCode, out currency))
                        {
                            currency = new CurrencyBuilder(this.Session).WithIsoCode(currencyIsoCode).WithSymbol(regionInfo.CurrencySymbol).Build();

                            currencyByIsoCode.Add(currencyIsoCode, currency);
                            englishNameByCurrency.Add(currency, regionInfo.CurrencyEnglishName);
                        }

                        if (country != null)
                        {
                            country.Currency = currency;
                        }
                    }

                    var localeIdentifier = cultureInfo.Name;

                    Locale locale;
                    if (!localeByName.TryGetValue(localeIdentifier, out locale))
                    {
                        if (country != null && language != null)
                        {
                            locale = new LocaleBuilder(this.Session)
                                .WithName(cultureInfo.Name)
                                .WithCountry(country)
                                .WithLanguage(language)
                                .Build();

                            localeByName.Add(localeIdentifier, locale);
                        }
                    }
                    else
                    {
                        locale.Name = cultureInfo.Name;
                        locale.Language = language;
                        locale.Country = country;
                    }
                }
            }

            var englishLocale = localeByName[EnglishGreatBritainName];

            foreach (var country in countryByIsoCode.Values)
            {
                if (englishNameByCountry.ContainsKey(country))
                {
                    var enlgishName = englishNameByCountry[country];

                    var englishCountryName = new LocalisedTextBuilder(this.Session)
                        .WithText(enlgishName)
                        .WithLocale(englishLocale)
                        .Build();

                    country.Name = enlgishName;
                    country.AddLocalisedName(englishCountryName);
                }
            }

            foreach (var currency in currencyByIsoCode.Values)
            {
                if (englishNameByCurrency.ContainsKey(currency))
                {
                    var englishName = englishNameByCurrency[currency];

                    var englishCurrencyName = new LocalisedTextBuilder(this.Session)
                        .WithText(englishName)
                        .WithLocale(englishLocale)
                        .Build();

                    currency.Name = englishName;
                    currency.AddLocalisedName(englishCurrencyName);
                }
            }

            foreach (var language in languageByIsoCode.Values)
            {
                if (englishNameByLanguage.ContainsKey(language))
                {
                    var englishName = englishNameByLanguage[language];

                    var englishLanguageName = new LocalisedTextBuilder(this.Session)
                        .WithText(englishName)
                        .WithLocale(englishLocale)
                        .Build();

                    language.Name = englishName;
                    language.AddLocalisedName(englishLanguageName);
                }
            }
        }
Ejemplo n.º 8
0
        public void Sync()
        {
            var englishNameByCountry  = new Dictionary <Country, string>();
            var englishNameByCurrency = new Dictionary <Currency, string>();
            var englishNameByLanguage = new Dictionary <Language, string>();

            var countryByIsoCode = new Dictionary <string, Country>();

            foreach (Country country in new Countries(this.Session).Extent())
            {
                countryByIsoCode.Add(country.IsoCode, country);
            }

            var languageByIsoCode = new Dictionary <string, Language>();

            foreach (Language language in new Languages(this.Session).Extent())
            {
                languageByIsoCode.Add(language.IsoCode, language);
            }

            var currencyByIsoCode = new Dictionary <string, Currency>();

            foreach (Currency currency in new Currencies(this.Session).Extent())
            {
                currencyByIsoCode.Add(currency.IsoCode, currency);
            }

            var localeByName = new Dictionary <string, Locale>();

            foreach (Locale locale in new Locales(this.Session).Extent())
            {
                localeByName.Add(locale.Name, locale);
            }

            foreach (var cultureInfo in CultureInfo.GetCultures(CultureTypes.SpecificCultures))
            {
                if (cultureInfo.LCID != 127)
                {
                    var      languageIsoCode = cultureInfo.TwoLetterISOLanguageName.ToLower();
                    Language language;
                    if (!languageByIsoCode.TryGetValue(languageIsoCode, out language))
                    {
                        language = new LanguageBuilder(this.Session)
                                   .WithIsoCode(languageIsoCode)
                                   .Build();

                        languageByIsoCode.Add(languageIsoCode, language);
                        englishNameByLanguage.Add(language, cultureInfo.Parent.EnglishName);
                    }

                    Country country    = null;
                    var     regionInfo = new RegionInfo(cultureInfo.LCID);

                    // Should be upper, but just in case ...
                    var countryIsoCode = regionInfo.TwoLetterISORegionName.ToUpper();

                    // sometimes a 2 letter code is a 3 digit code ...
                    if (countryIsoCode.Length == 2)
                    {
                        if (!countryByIsoCode.TryGetValue(countryIsoCode, out country))
                        {
                            country = new CountryBuilder(this.Session).WithIsoCode(countryIsoCode).Build();

                            englishNameByCountry.Add(country, regionInfo.EnglishName);
                            countryByIsoCode.Add(countryIsoCode, country);
                        }

                        var      currencyIsoCode = regionInfo.ISOCurrencySymbol.ToUpper();
                        Currency currency;
                        if (!currencyByIsoCode.TryGetValue(currencyIsoCode, out currency))
                        {
                            currency = new CurrencyBuilder(this.Session).WithIsoCode(currencyIsoCode).WithSymbol(regionInfo.CurrencySymbol).Build();

                            currencyByIsoCode.Add(currencyIsoCode, currency);
                            englishNameByCurrency.Add(currency, regionInfo.CurrencyEnglishName);
                        }

                        if (country != null)
                        {
                            country.Currency = currency;
                        }
                    }

                    var localeIdentifier = cultureInfo.Name;

                    Locale locale;
                    if (!localeByName.TryGetValue(localeIdentifier, out locale))
                    {
                        if (country != null && language != null)
                        {
                            locale = new LocaleBuilder(this.Session)
                                     .WithName(cultureInfo.Name)
                                     .WithCountry(country)
                                     .WithLanguage(language)
                                     .Build();

                            localeByName.Add(localeIdentifier, locale);
                        }
                    }
                    else
                    {
                        locale.Name     = cultureInfo.Name;
                        locale.Language = language;
                        locale.Country  = country;
                    }
                }
            }

            var englishLocale = localeByName[EnglishGreatBritainName];

            foreach (var country in countryByIsoCode.Values)
            {
                if (englishNameByCountry.ContainsKey(country))
                {
                    var enlgishName = englishNameByCountry[country];

                    var englishCountryName = new LocalisedTextBuilder(this.Session)
                                             .WithText(enlgishName)
                                             .WithLocale(englishLocale)
                                             .Build();

                    country.Name = enlgishName;
                    country.AddLocalisedName(englishCountryName);
                }
            }

            foreach (var currency in currencyByIsoCode.Values)
            {
                if (englishNameByCurrency.ContainsKey(currency))
                {
                    var englishName = englishNameByCurrency[currency];

                    var englishCurrencyName = new LocalisedTextBuilder(this.Session)
                                              .WithText(englishName)
                                              .WithLocale(englishLocale)
                                              .Build();

                    currency.Name = englishName;
                    currency.AddLocalisedName(englishCurrencyName);
                }
            }

            foreach (var language in languageByIsoCode.Values)
            {
                if (englishNameByLanguage.ContainsKey(language))
                {
                    var englishName = englishNameByLanguage[language];

                    var englishLanguageName = new LocalisedTextBuilder(this.Session)
                                              .WithText(englishName)
                                              .WithLocale(englishLocale)
                                              .Build();

                    language.Name = englishName;
                    language.AddLocalisedName(englishLanguageName);
                }
            }
        }