예제 #1
0
    private void SetCulture(string langType)
    {
        if (!String.IsNullOrEmpty(langType))
            {
                try
                {
                    LocaleData currentlocale = null;

                    String cacheKey = String.Format(CACHE_KEY_FORMAT, langType);
                    if (HttpContext.Current.Cache[cacheKey] == null)
                    {
                        lock (padlock)
                        {
                            if (HttpContext.Current.Cache[cacheKey] == null)
                            {
                                // Look up culture information from CMS

                                LocaleManager localeManager = new LocaleManager(Ektron.Cms.Framework.ApiAccessMode.Admin);
                                Criteria<LocaleProperty> criteria = new Criteria<LocaleProperty>();
                                criteria.AddFilter(LocaleProperty.Id, CriteriaFilterOperator.EqualTo, langType);
                                List<LocaleData> matchingLocals = localeManager.GetList(criteria);
                                if (matchingLocals != null && matchingLocals.Count > 0)
                                {
                                    currentlocale = matchingLocals[0];
                                    HttpContext.Current.Cache.Insert(cacheKey, currentlocale);
                                }
                            }
                        }
                    }

                    if (HttpContext.Current.Cache[cacheKey] != null)
                    {
                        currentlocale = (LocaleData)HttpContext.Current.Cache[cacheKey];
                        // Set asp.net culture property.
                        Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo(currentlocale.Culture);
                        Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo(currentlocale.UICulture);
                    }

                }
                catch (Exception exc)
                {
                    _error = exc.Message;
                }
            }
    }