/// <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); }
public string ResolveLocale(string localeCode) { var result = SupportedLocales.FirstOrDefault(l => l.Key.Contains(localeCode)).Key; if (string.IsNullOrEmpty(result)) { result = DefaultLocale; } return(result); }
/// <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()); } }
/// <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) )); }