private IEnumerable <KeyValuePair <SiteCulture, string> >?GetNonDatabaseUrlVariants(string searchPath)
        {
            var cultures = _siteCultureRepository.GetAll();
            var segments = searchPath.Split('/');

            if (cultures.Any(culture => culture.IsoCode?.Equals(segments?[1], StringComparison.InvariantCultureIgnoreCase) == true))
            {
                var trailingPath = string.Join('/', segments.Skip(2));

                return(cultures.Select(culture => new KeyValuePair <SiteCulture, string>(culture, $"/{culture.IsoCode?.ToLower()}/{trailingPath}")));
            }

            return(null);
        }
        /// <summary>
        /// Gets navigation hierarchies for all cultures, based on data provided by the CTB router.
        /// </summary>
        /// <returns>All navigation hierarchies.</returns>
        private Dictionary <SiteCulture, NavigationItem> GetContentTreeNavigation()
        {
            var cultures = _cultureRepository.GetAll();
            var cultureSpecificNavigations = new Dictionary <SiteCulture, NavigationItem>();

            if (cultures != null && cultures.Any())
            {
                foreach (var culture in cultures)
                {
                    cultureSpecificNavigations.Add(culture, GetContentTreeNavigation(culture));
                }
            }

            return(cultureSpecificNavigations);
        }