我有一个网页,我使用App_LocalResources文件,我翻译了2种语言。
这非常有效。但是,当我打开两页时,我遇到了一个非常奇怪的问题。如果我打开英文版,我的丹麦语网址也是英文版。如果我首先打开丹麦语网址,那么英语网址是丹麦语。如果我按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");
答案 0 :(得分:2)
您需要覆盖InitializeCulture,例如:
protected override void InitializeCulture()
{
SetupLanguage();
base.InitializeCulture();
}
这是在页面生命周期的早期调用的。也可以看看: http://msdn.microsoft.com/en-us/library/bz9tc508.aspx