private static IEnumerable <ViewGlobalizationResolver> LoadGlobalizationResolversFromAssembly()
        {
            var types = Assembly.GetExecutingAssembly().GetTypes().Where(x => x.IsClass && x.IsSubclassOf(typeof(ViewGlobalizationResolver)));

            var allResolversList = new List <ViewGlobalizationResolver>();

            foreach (var type in types)
            {
                ViewGlobalizationResolver instance = (ViewGlobalizationResolver)Activator.CreateInstance(type, true);
                allResolversList.Add(instance);
            }

            return(allResolversList);
        }
        static ViewGlobalizationResolver()
        {
            _registeredResolvers = LoadGlobalizationResolversFromAssembly();

            if (!_registeredResolvers.Any())
            {
                _defaultResolver = null;
                return;
            }
            else
            {
                CultureInfo defaultCulture = WebAppCultureManager.Current.DefaultCulture;
                ViewGlobalizationResolver defaultResolver = _registeredResolvers.FirstOrDefault(x => x.Culture.Equals(defaultCulture));

                if (defaultResolver == null)
                {
                    throw new Exception(string.Format("The ViewGlobalizationResolver for the default culture {0} needs to be implemented.", defaultCulture.Name));
                }
            }
        }
        public static ViewGlobalizationResolver GetResolver()
        {
            CultureInfo culture = Thread.CurrentThread.CurrentUICulture;
            ViewGlobalizationResolver resolver = _registeredResolvers.FirstOrDefault(x => x.Culture.Equals(culture));

            if (resolver != null)
            {
                return(resolver);
            }

            CultureInfo neutralCulture = CultureHelper.GetNeutralCulture(culture);
            ViewGlobalizationResolver neutralResolver = _registeredResolvers.FirstOrDefault(x => x.Culture.Equals(neutralCulture));

            if (neutralResolver != null)
            {
                return(neutralResolver);
            }

            return(_defaultResolver);
        }