首页 文章

更改网站上的文化和ui文化只会更新一个字段

提问于
浏览
0

我有一个问题,通过执行按钮单击以更改网站上的语言(http://cptestlocalisation.azurewebsites.net)动态更改文化和UI文化不会更改"all"我的resx字段(由于某种原因只有一个字段更改)基于以下回退App_LocalResources文件:

Site.Master.resx
Site.Master.fr.resx
Site.Master.zh.resx

但是,只有在调整浏览器的语言首选项和刷新页面时,上述工作才正常 .

内容分别为:

header.Text Localisation and Globalisation Test Website
login.Text  Log In
logout.LogoutText   Log Out
menuItemAbout.Text  About
menuItemHome.Text   Home

header.Text Localisation et mondialisation test Site Web
login.Text  Se Connecter
logout.LogoutText   Se Déconnecter
menuItemAbout.Text  à propos
menuItemHome.Text   maison

header.Text 本地化和全球化测试网站
login.Text  登入
logout.LogoutText   Log Out
menuItemAbout.Text  关于我们
menuItemHome.Text   登出

什么不起作用的代码片段:

<h1 runat="server" enableviewstate="false">
    <asp:Localize runat="server" ID="header" meta:resourcekey="header" />
</h1>

什么有效:

<asp:LoginView ID="HeadLoginView" runat="server" EnableViewState="false">
    <AnonymousTemplate>
        [ <a href="#" ID="HeadLoginStatus" runat="server"><asp:Localize runat="server" ID="login" meta:resourcekey="login" /></a> ]
    </AnonymousTemplate>
    <LoggedInTemplate>
        Welcome <span class="bold"><asp:LoginName ID="HeadLoginName" runat="server" /></span>!
        [ <asp:LoginStatus ID="HeadLoginStatus" runat="server" LogoutAction="Redirect" meta:resourcekey="logout" LogoutPageUrl="~/"/> ]
    </LoggedInTemplate>
</asp:LoginView>

代码背后:

protected void btnEnglish_Click(object sender, EventArgs e)
{
    Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfo("en-US");
    Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo("en-US");
    InitializeCulture();
}

protected void btnFrench_Click(object sender, EventArgs e)
{
    Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfo("fr");
    Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo("fr");
    InitializeCulture();
}

protected void btnChinese_Click(object sender, EventArgs e)
{
    Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfo("zh");
    Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo("zh");
    InitializeCulture();
}

Web.config条目:

<globalization culture="auto" uiCulture="auto" enableClientBasedCulture="true" />

我需要帮助解决这个问题的底部 . 如果您看到该网站,则只需点击按钮右上角的登录链接即可 .

1 回答

  • 1

    我不指望它能起作用 . 您只是从执行按钮单击的角度更改当前线程的文化和uiculture . 在按钮单击事件之前处理的任何内容都不会生效 . 不要这样做,而是使用所选文化设置一个cookie,然后将页面重定向回自身 . 检查oninit事件中的cookie,如果找到,请更改文化以匹配cookie值 .

相关问题