private void Sync() { var existingLocalisedtexts = this.LocalisedValues.ToDictionary(d => d.Locale); foreach (Locale locale in this.Strategy.Session.GetSingleton().AdditionalLocales) { if (existingLocalisedtexts.TryGetValue(locale, out var localisedText)) { localisedText.Text = this.Value; existingLocalisedtexts.Remove(locale); } else { localisedText = new LocalisedTextBuilder(this.Strategy.Session) .WithLocale(locale) .Build(); this.AddLocalisedValue(localisedText); } } foreach (var localisedText in existingLocalisedtexts.Values) { this.RemoveLocalisedValue(localisedText); } }
public void GivenLocalisedTextWhenValidatingThenRequiredRelationsMustExist() { var builder = new LocalisedTextBuilder(this.DatabaseSession); builder.Build(); Assert.IsTrue(this.DatabaseSession.Derive().HasErrors); builder.WithText("description"); Assert.IsFalse(this.DatabaseSession.Derive().HasErrors); }
public void GivenLocalisedTextWhenValidatingThenRequiredRelationsMustExist() { var builder = new LocalisedTextBuilder(this.Session); builder.Build(); Assert.True(this.Session.Derive(false).HasErrors); builder.WithText("description"); Assert.False(this.Session.Derive(false).HasErrors); }
public void SetLocalisedName(Locale locale, string name) { var localisedName = this.LocalisedNames.FirstOrDefault(localizedText => localizedText.Locale.Equals(locale)); if (localisedName == null) { localisedName = new LocalisedTextBuilder(this.Strategy.Session).WithText(name).WithLocale(locale).Build(); this.AddLocalisedName(localisedName); } else { localisedName.Text = name; } }
public void GivenLocalisedTextWhenValidatingThenRequiredRelationsMustExist() { var builder = new LocalisedTextBuilder(this.Session); builder.Build(); Assert.True(this.Session.Derive(false).HasErrors); this.Session.Rollback(); builder.WithLocale(new Locales(this.Session).EnglishGreatBritain); builder.Build(); Assert.False(this.Session.Derive(false).HasErrors); }
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); } } }
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); } } }