private IEnumerable <Translation> GetTranslations() { ItemFilter languageFilter = new CompositeFilter(new AccessFilter(), new PublishedFilter()); IEnumerable <ContentItem> translations = _languageGateway.FindTranslations(Find.ClosestStartPage); foreach (ContentItem translation in languageFilter.Pipe(translations)) { ILanguage language = _languageGateway.GetLanguage(translation); // Hide translations when filtered access to their language ContentItem languageItem = language as ContentItem; if (languageItem == null || languageFilter.Match(languageItem)) { yield return(new Translation(translation, language)); } } }