/// <summary>
        /// Ivalidates app localizations cache
        /// </summary>
        /// <param name="appName"></param>
        public static void InvalidateAppLocalizationsCache(string appName, string className)
        {
            //app localizations cache first

            if (AppLocalizationsCache.ContainsKey(appName) && string.IsNullOrEmpty(className))
            {
                AppLocalizationsCache.Remove(appName);
            }
            else if (AppLocalizationsCache.ContainsKey(appName))
            {
                AppLocalizationsCache.Remove(appName);

                //FIXME - this requires better reading - need to read from db to 'top up' the cache

                //var localizations = AppLocalizationsCache[appName].ToList();

                //var toBeRemoved = localizations.FirstOrDefault(l => l.ClassName == className);
                //if(toBeRemoved != null)
                //    localizations.Remove(toBeRemoved);

                //AppLocalizationsCache[appName] = localizations;
            }

            //clients cache too...
            var keysToInvalidate = ClientLocalizationsCache.Keys.Where(k => k.IndexOf(appName) > -1).ToList();

            foreach (var key in keysToInvalidate)
            {
                ClientLocalizationsCache.Remove(key);
            }
        }