Changing the culture and ui culture on the site only updates one field
我遇到了一个问题,即通过单击按钮来更改网站 (http://cptestlocalisation.azurewebsites.net) 上的语言来动态更改文化和 UI 文化不会更改"全部"我的 resx 字段(由于某种原因,只有一个字段更改)基于以下 App_LocalResources 文件的后备:
1 2 3 | Site.Master.resx Site.Master.fr.resx Site.Master.zh.resx |
但是,只有在调整浏览器的语言首选项并刷新页面时,上述方法才能正常工作。
内容分别为:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | 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 ?…3?o???‘??? menuItemHome.Text ?????o |
什么不起作用的代码片段:
1 | <h1 runat="server" enableviewstate="false"> |
什么有效:
1 2 3 4 5 6 7 8 | <AnonymousTemplate> [ ] </AnonymousTemplate> <LoggedInTemplate> Welcome <span class="bold"></span>! [ ] </LoggedInTemplate> </asp:LoginView> |
后面的代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | 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 条目:
1 | <globalization culture="auto" uiCulture="auto" enableClientBasedCulture="true" /> |
我需要帮助来了解这个问题的根源。如果您看到该网站,则只有右上角的登录链接会在单击按钮时发生变化。
我不希望它起作用。您只是从按钮单击的执行点更改当前线程的文化和 uiculture。在按钮单击事件之前处理的任何事情都不会受到影响。不要这样做,而是使用所选文化设置一个 cookie,然后将页面重定向回自身。检查 oninit 事件中的 cookie,如果找到,更改文化以匹配 cookie 值。