I am having an issue where changing the culture and UI culture dynamically by performing a button click to change the language on the website (http://cptestlocalisation.azurewebsites.net) does not change "all" my resx fields (only one field changes for some reason) based on fallback for the following App_LocalResources files:
Site.Master.resx
Site.Master.fr.resx
Site.Master.zh.resx
However, the above works just fine only when adjusting the browser's language preference and refreshing the page.
The contents are respectively:
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 登出
What does not work code snippet:
<h1 runat="server" enableviewstate="false">
<asp:Localize runat="server" ID="header" meta:resourcekey="header" />
</h1>
What works:
<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>
Code behind:
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 entry:
<globalization culture="auto" uiCulture="auto" enableClientBasedCulture="true" />
I need help getting to the bottom of this issue. If you see the website, only the login link in the top right hand corner changes on button click.