我有一个使用 App_LocalResources 文件的网页,其中有 2 种语言的翻译。
这真的很好用。然而,当我打开我的两个页面时,我遇到了一个非常奇怪的问题。如果我打开英文版,我的丹麦语 URL 也是英文的。如果我先打开 med 丹麦语 URL,则英语是丹麦语。如果我 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");