2013-05-16 4 views
0

У меня есть веб-страница, где я использую файлы App_LocalResources, где у меня есть переводы на 2 языка.Содержимое в моих локальных файлах ресурсов, кажется, кэшировано

Это работает очень хорошо. Однако, когда я открываю свои две страницы, я получаю довольно странную проблему. Если я открою английскую версию, мой датский URL-адрес также является английским. Если я сначала открою ссылку на датский URL, английский на датском языке. Если i CTRL + F5 это, он меняет язык.

Вы можете увидеть результат здесь:

Это действительно раздражает, так как он должен загрузить соответствующий язык сразу ,

Мой код на странице butbtc.aspx (я также попытался Page_Load):

protected override void OnInit(EventArgs e) 
{ 
    base.OnInit(e); 
    SetupLanguage(); 

} 

Мой метод SetupLanguage является:

private void SetupLanguage() 
    { 
     if (!string.IsNullOrEmpty(CurrentLanguage)) 
     { 
      if (CurrentLanguage == "da") 
      { 
       CultureInfo dkinfo = CultureInfo.CreateSpecificCulture("da-dk"); 
       CultureInfo.DefaultThreadCurrentCulture = dkinfo; 
       CultureInfo.DefaultThreadCurrentUICulture = dkinfo; 
       Thread.CurrentThread.CurrentCulture = dkinfo; 
       Thread.CurrentThread.CurrentUICulture = dkinfo; 

       Page.Title = GetLocalResourceObject("PageTitleString").ToString(); 
       return; 
      } 
     } 
     CultureInfo info = CultureInfo.CreateSpecificCulture("en-us"); 
     CultureInfo.DefaultThreadCurrentCulture = info; 
     CultureInfo.DefaultThreadCurrentUICulture = info; 
     Thread.CurrentThread.CurrentCulture = info; 
     Thread.CurrentThread.CurrentUICulture = info; 

    } 

Моя собственность CurrentLanguage определяется следующим образом:

public string CurrentLanguage 
    { 
     get 
     { 
      var toolValue = Page.RouteData.Values["language"]; 
      if (toolValue != null && !string.IsNullOrEmpty(toolValue.ToString())) 
      { 
       return toolValue.ToString(); 
      } 
      return string.Empty; 
     } 
    } 

Если мой маршрут имеет какое-либо значение, это:

routes.MapPageRoute("Buy Bitcoins", 
         "buybtc/{language}", 
         "~/buybtc.aspx"); 

ответ

2

Вы должны были бы переопределить InitializeCulture такие как:

protected override void InitializeCulture() 
{ 
    SetupLanguage(); 
    base.InitializeCulture(); 
} 

Это называется в начале жизненного цикла страницы. См. Также: http://msdn.microsoft.com/en-us/library/bz9tc508.aspx

+0

Теперь это просто решило sooo много часов работы. Спасибо :) –

Смежные вопросы