public static LocalizedTabInfo GetLocalizedTab(int tabId, int portalId, bool fromCache)
        {
            TabInfo tabInfo = TabController.Instance.GetTab(tabId, portalId);

            if (tabInfo == null)
            {
                return(null);
            }
            else if (fromCache)
            {
                return(GetLocalizedTab(tabInfo, true));
            }
            else
            {
                var tabController = new TabLocaleController();
                var localizedTab  = new LocalizedTabInfo(tabInfo.Clone())
                {
                    LocaleList = tabController.GetListByTabID(tabId).ToList()
                };
                return(localizedTab);
            }
        }
        /// <summary>
        /// Loads localized TabInfos from the actual visible tabs for a given portal id.
        /// System Tabs and Admin Tabs are excluded from the result set.
        /// </summary>
        /// <returns></returns>
        /// <remarks></remarks>
        public static List <LocalizedTabInfo> GetLocalizedTabs(bool fromCache)
        {
            string cacheKey    = string.Format(Constants.LocalizedTabsCacheKey, PortalSettings.Current.PortalId);
            var    cacheObject = fromCache ? DataCache.GetCache(cacheKey) : null;

            if (cacheObject != null)
            {
                return((List <LocalizedTabInfo>)cacheObject);
            }
            else
            {
                var localizedTabs = new List <LocalizedTabInfo>();
                var allTabLocales = new TabLocaleController().GetAll().ToList();
                //Dictionary<int, TabInfo> tabInfos = TabController.Instance.GetTabsByPortal(PortalSettings.Current.PortalId);
                Dictionary <int, TabInfo> tabInfos = TabController.Instance.GetUserTabsByPortal(PortalSettings.Current.PortalId);

                foreach (TabInfo dnnTab in tabInfos.Values)
                {
                    var tabInfo = new LocalizedTabInfo(dnnTab.Clone());

                    if (allTabLocales != null && allTabLocales.Count > 0)
                    {
                        tabInfo.LocaleList = allTabLocales.Where(x => x.TabID == tabInfo.TabID).ToList();
                    }

                    localizedTabs.Add(tabInfo);
                }

                if (fromCache)
                {
                    DataCache.SetCache(cacheKey, localizedTabs);
                }

                return(localizedTabs);
            }
        }