Модераторы: gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Локализация usercontrol в umbraco 
V
    Опции темы
Stifler
Дата 5.8.2010, 11:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 36
Регистрация: 18.5.2007

Репутация: нет
Всего: нет



Приветствую! 
Есть пользовательский контрол MyControl.ascx, который используется на странице umbraco. 
Пробовал локализовывать контрол методами .NET: 

В разметке контрола:
Код

<asp:Localize meta:resourcekey="Title" runat="server"/>


В behindCode:
Код

protected void Page_Load(object sender, EventArgs e)
{
      var language = page.Request.QueryString.Get(GeneralResources.LanguageParam);
            

            // if no 'lang' param in request then try to get it from session
            if (String.IsNullOrEmpty(language))
            {
                language = (string)page.Session[GeneralResources.LanguageParam];
            }

            CultureInfo culture;
            string cultureString;
            switch (language)
            {
                case GeneralResources.DeValue:
                    culture = CultureInfo.CreateSpecificCulture("de-DE");
                    cultureString = "de-DE";
                    break;
                case GeneralResources.DaValue:
                    culture = CultureInfo.CreateSpecificCulture("da-DK");
                    cultureString = "da-DK";
                    break;
                default:
                    culture = CultureInfo.CreateSpecificCulture("en-US");
                    cultureString = "en-US";
                    break;
            }
            Thread.CurrentThread.CurrentCulture = culture;
            Thread.CurrentThread.CurrentUICulture = culture;
            page.Culture = cultureString;
            page.UICulture = cultureString;
      ...
}


В папке App_LocalResources лежат файлы MyControl.ascx.resx, MyControl.ascx.de-DE.resx, MyControl.asxc.en-US.resx и MyControl.ascx.da-DK.resx.

Смотрим страницу с контролом и видим (сделал label для отображения текущей культуры Page.Culture и Page.CultureUI), что культура установлена верно, но ресурсы подгружаются из MyControl.ascx.resx. Удаляем этот ресурс - и локализованные значения из других ресурсов не подгружаются вовсе.

Подскажите, пожалуйста, где может быть ошибка в варианте .NET локализации! 
Или есть вариант использовать локализацию силами umbraco. Тогда как локализовать user control в таком случае?

Это сообщение отредактировал(а) Stifler - 5.8.2010, 14:28
PM   Вверх
Stifler
Дата 5.8.2010, 16:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 36
Регистрация: 18.5.2007

Репутация: нет
Всего: нет



Посоветовали переопределить метод InitializeCulture() и нём задать Culture. Учитывая, что UserControl в отличие от Page не обладает таким методом, то решено было засунуть задание Culture в Global.asax:
Код

public void Application_AcquireRequestState(object sender, EventArgs e)
        {
            var language = Request.QueryString.Get("lang");


            // if no 'lang' param in request then try to get it from session
            if (String.IsNullOrEmpty(language))
            {
                language = (string)Session["lang"];
            }

            string cultureString;
            switch (language)
            {
                case GeneralResources.DeValue:
                    cultureString = "de-DE";
                    break;
                case GeneralResources.DaValue:
                    cultureString = "da-DK";
                    break;
                default:
                    cultureString = "en-US";
                    break;
            }
            CultureInfo culture = System.Globalization.CultureInfo.CreateSpecificCulture(cultureString);

            System.Threading.Thread.CurrentThread.CurrentCulture = culture;
            System.Threading.Thread.CurrentThread.CurrentUICulture = culture;
        }


После чего ресурсы подхватились! Насколько это гуд с точки зрения стиля не знаю, но пока больше ничего не нашёл. 
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Любитель
Mymik
mr.DUDA

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Любитель, Mymik, mr.DUDA.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Разработка под ASP.NET | Следующая тема »


 




[ Время генерации скрипта: 0.0593 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.