Контент в моих файлах локальных ресурсов, кажется, кэшируется
У меня есть веб-страница, где я использую файлы App_LocalResources, где у меня есть переводы на 2 языка.
Это работает очень хорошо. Однако, когда я открываю свои две страницы, у меня возникает довольно странная проблема. Если я открою английскую версию, мой датский URL также будет английским. Если я сначала открою медданский URL, то английский будет на датском. Если я CTRL+F5, это меняет язык.
Вы можете увидеть результат здесь:
- http://www.btcglobe.com/buybtc.aspx (английская версия)
- http://www.btcglobe.com/buybtc/da (датская версия)
Это действительно раздражает, так как должно сразу загрузить соответствующий язык.
Мой код на странице 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");
1 ответ
Вам нужно переопределить InitializeCulture, например:
protected override void InitializeCulture()
{
SetupLanguage();
base.InitializeCulture();
}
Это называется ранее в жизненном цикле страницы. Смотрите также: http://msdn.microsoft.com/en-us/library/bz9tc508.aspx