2014-10-08 117 views
0

我遇到一个问题,通过执行按钮单击以更改网站上的语言(http://cptestlocalisation.azurewebsites.net)不会更改“全部”我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

我不希望它工作。你只是在点击按钮执行的时候改变当前线程的文化和文化。在按钮点击事件之前处理的任何内容都不会受到影响。而不是这样做,设置一个cookie与选定的文化,然后重定向页面本身。检查oninit事件中的cookie,如果找到,请更改文化以匹配cookie值。

+0

嗨马克,现在像一个魅力。使用cookie存储首选语言并在初始化页面上重新加载页面,并且星星符合我的日子。谢谢。 – 2014-10-09 00:35:49