Esempio n. 1
0
        /// <summary>
        ///   Get the language supported by the regional website based on culture
        /// </summary>
        /// <param name="cultureName"> The culture to lookup </param>
        /// <returns> Language of the culture specified is returned if available and supported by the website, otherwise the default language for the regional site is used. </returns>
        public string GetSupportedLocale(string cultureName)
        {
            if (string.IsNullOrEmpty(cultureName))
            {
                cultureName = CultureInfo.CurrentCulture.Name;
            }
            // try to find the exact culture
            string foundCulture =
                SupportedLocales.FirstOrDefault(sc => string.Equals(cultureName, sc, StringComparison.OrdinalIgnoreCase));

            if (foundCulture == null)
            {
                // if not available, try to find a culture with the same language
                foundCulture =
                    SupportedLocales.FirstOrDefault(
                        sc =>
                        string.Equals(cultureName.Substring(0, 2), sc.Substring(0, 2),
                                      StringComparison.OrdinalIgnoreCase));
                if (foundCulture == null)
                {
                    return(SupportedLocales[0]); // if not available get the site's default language
                }
            }
            return(foundCulture);
        }
Esempio n. 2
0
        public string ResolveLocale(string localeCode)
        {
            var result = SupportedLocales.FirstOrDefault(l => l.Key.Contains(localeCode)).Key;

            if (string.IsNullOrEmpty(result))
            {
                result = DefaultLocale;
            }

            return(result);
        }
Esempio n. 3
0
 /// <summary>
 /// Gets the hash code
 /// </summary>
 /// <returns>Hash code</returns>
 public override int GetHashCode()
 {
     unchecked // Overflow is fine, just wrap
     {
         var hashCode = 41;
         // Suitable nullity checks etc, of course :)
         if (SupportedLocales != null)
         {
             hashCode = hashCode * 59 + SupportedLocales.GetHashCode();
         }
         if (LocalizableProperties != null)
         {
             hashCode = hashCode * 59 + LocalizableProperties.GetHashCode();
         }
         return(hashCode);
     }
 }
        private void checkLocale(string newValue)
        {
            var    locales     = SupportedLocales.ToList();
            string validLocale = null;

            if (locales.Contains(newValue))
            {
                validLocale = newValue;
            }
            else
            {
                var culture = string.IsNullOrEmpty(newValue) ?
                              CultureInfo.CurrentCulture :
                              new CultureInfo(newValue);

                for (var c = culture; !c.Equals(CultureInfo.InvariantCulture); c = c.Parent)
                {
                    if (locales.Contains(c.Name))
                    {
                        validLocale = c.Name;
                        break;
                    }
                }

                if (validLocale == null)
                {
                    validLocale = locales[0];
                }
            }

            if (validLocale != newValue)
            {
                locale.Value = validLocale;
            }
            else
            {
                var culture = new CultureInfo(validLocale);
                CultureInfo.DefaultThreadCurrentCulture   = culture;
                CultureInfo.DefaultThreadCurrentUICulture = culture;
                ChangeLocale(validLocale);

                localisedBindings.ForEachAlive(b => b.Value = GetLocalised(b.Key));
                formattableBindings.ForEachAlive(b => b.Update());
            }
        }
Esempio n. 5
0
        /// <summary>
        /// Returns true if GuideLocalizationServiceProperties instances are equal
        /// </summary>
        /// <param name="other">Instance of GuideLocalizationServiceProperties to be compared</param>
        /// <returns>Boolean</returns>
        public bool Equals(GuideLocalizationServiceProperties other)
        {
            if (other is null)
            {
                return(false);
            }
            if (ReferenceEquals(this, other))
            {
                return(true);
            }

            return
                ((
                     SupportedLocales == other.SupportedLocales ||
                     SupportedLocales != null &&
                     SupportedLocales.Equals(other.SupportedLocales)
                     ) &&
                 (
                     LocalizableProperties == other.LocalizableProperties ||
                     LocalizableProperties != null &&
                     LocalizableProperties.Equals(other.LocalizableProperties)
                 ));
        }