public ActionResult Fruit(RenderModel model, string slug)
        {
            if (string.IsNullOrEmpty(slug))
            {
                return null;
            }
            else
            {
                foreach (var node in model.Content.Children)
                {
                    var potentialUrls = new List<string>();

                    var v = new VortoApiController();
                    var langs = (List<Our.Umbraco.Vorto.Models.Language>)v.GetInstalledLanguages();

                    foreach (var lang in langs)
                    {
                        var vortoValue = node.GetVortoValue<string>("fruitName", lang.IsoCode);
                        if (!string.IsNullOrEmpty(vortoValue))
                        {
                            potentialUrls.Add(vortoValue.ToUrlSegment());
                        }
                    }

                    if (potentialUrls.Contains(slug))
                    {
                        // match
                        return this.View("~/Views/Fruit.cshtml", this.CreateRenderModel(node));
                    }
                }
                return this.HttpNotFound();
            }
        }
        public override IEnumerable<string> GetOtherUrls(UmbracoContext umbracoContext, int id, Uri current)
        {
            var node = umbracoContext.ContentCache.GetById(id);

            if (node != null && node.ContentType.Alias.Equals("Fruit"))
            {
                if (node.HasVortoValue("fruitName"))
                {
                    var v = new VortoApiController();
                    var langs = (List<Our.Umbraco.Vorto.Models.Language>)v.GetInstalledLanguages();

                    var primaryLang = string.Empty;

                    var enUs = langs.FirstOrDefault(x => x.IsoCode == "en-US");

                    if (enUs != null)
                    {
                        langs.Remove(enUs);
                    }
                    else
                    {
                        var firstLang = langs.FirstOrDefault();
                        langs.Remove(firstLang);
                    }

                    var otherUrls = new List<string>();
                    var allBoxes = umbracoContext.ContentCache.GetAtRoot().DescendantsOrSelf("Box");

                    foreach (var lang in langs)
                    {
                        var vortoValue = node.GetVortoValue<string>("fruitName", lang.IsoCode);

                        var culture = CultureInfo.GetCultureInfo(lang.IsoCode);

                        var langBox = allBoxes.FirstOrDefault(x => Equals(x.GetCulture(), culture));

                        if (langBox != null)
                        {
                            otherUrls.Add(string.Format("{0}{1}/", langBox.Url, vortoValue.ToUrlSegment()));
                        }
                    }

                    return otherUrls;
                }
            }

            return base.GetOtherUrls(umbracoContext, id, current);
        }
        public override string GetUrl(UmbracoContext umbracoContext, int id, Uri current, UrlProviderMode mode)
        {
            var node = umbracoContext.ContentCache.GetById(id);

            if (node != null && node.ContentType.Alias.Equals("Fruit"))
            {
                if (node.HasVortoValue("fruitName"))
                {
                    var v = new VortoApiController();
                    var lang = (List<Our.Umbraco.Vorto.Models.Language>)v.GetInstalledLanguages();

                    var primaryLang = string.Empty;

                    if (lang.Select(x => x.IsoCode).Contains("en-US"))
                    {
                        primaryLang = "en-US";
                    }
                    else
                    {
                        var firstOrDefault = lang.FirstOrDefault();
                        if (firstOrDefault != null)
                        {
                            primaryLang = firstOrDefault.IsoCode;
                        }
                    }

                    var vortoValue = node.GetVortoValue<string>("fruitName", primaryLang);
                    var culture = CultureInfo.GetCultureInfo(primaryLang);
                    var primaryBox = umbracoContext.ContentCache.GetAtRoot().DescendantsOrSelf("Box").FirstOrDefault(x => Equals(x.GetCulture(), culture));

                    if (primaryBox != null)
                    {
                        return string.Format("{0}{1}/", primaryBox.Url, vortoValue.ToUrlSegment());
                    }
                }
            }

            return base.GetUrl(umbracoContext, id, current, mode);
        }