public virtual void SetEntryDisplayNames(LanguageSwitchEntryViewModel entry, CultureInfo entryCulture)
        {
            var displayName = (entryCulture.CultureTypes & CultureTypes.SpecificCultures) != 0 ? entryCulture.Parent.NativeName : entryCulture.NativeName;

            entry.DisplayName      = CultureInfo.CurrentCulture.TextInfo.ToTitleCase(displayName);
            entry.ShortDisplayName = entryCulture.TwoLetterISOLanguageName;
            entry.CultureName      = entryCulture.Name;
        }
        protected virtual LanguageSwitchEntryViewModel CreateEntry(
            Func <CultureInfo, string> urlBuilder,
            CultureInfo entryCulture,
            CultureInfo currentCulture)
        {
            var url = urlBuilder.Invoke(entryCulture);

            var entry = new LanguageSwitchEntryViewModel
            {
                IsCurrent = entryCulture.Equals(currentCulture),
                Url       = url
            };

            SetEntryDisplayNames(entry, entryCulture);

            return(entry);
        }