我正在构建一个多语言支持的网站。 为此,我在母版页上有一个链接按钮。母版页中的ASP.NET语言设置
我已经创建了一个新的基类继承自。 我已经在Global.asax文件中设置了CurrentUICulture和CurrentCulture。 我已经创建了母版的资源文件。 我已在webconfig文件中设置全球化行。 如同时设置的区域性和uiculture为“自动”
我的母版页被称为“masterpage.master” 我有两个资源文件:masterpage.master.en-gb.resx
和masterpage.master.nl-nl.resx
。 (我也尝试使用en-GB和nl-NL)
我以英文创建了母版页。 我使用cookie来存储所选语言。默认情况下,cookie将被设置为“en-GB”,但是为了测试,我将它设置为“nl-NL”。
Cookie已创建,并且通过测试,我看到文化已设置为nl-NL
。
然而....链接按钮文本没有改变。它显示了en-GB文本,而不是nl-NL文本。
我错过了什么? 网站如何选择正确的resx文件?是根据文件名中的语言和国家/地区设置自动完成的,还是我必须指出?
链接按钮的标记:
<asp:LinkButton ID="lbCHangeLanguage" runat="server" CssClass="lbCHangeLanguage" OnClientClick="javascript:return confirm('If you continue any unsaved changes will disappear!\n\nPress OK to continue.')" meta:resourcekey="lbCHangeLanguageResource1" Text="CHANGE LANGUAGE"></asp:LinkButton>
在global.asax中:
Sub Application_BeginRequest(ByVal sender As Object, ByVal e As EventArgs)
' Fires at the beginning of each request
Dim myLangCookie As HttpCookie
myLangCookie = Request.Cookies.Get("FASTLANG")
If myLangCookie Is Nothing Then
myLangCookie = New HttpCookie("FASTLANG")
myLangCookie.Values.Add("language", Languages.Dutch)
myLangCookie.Secure = False
If Request.Url.OriginalString.Contains("localhost") = False Then myLangCookie.Secure = True
If Request.Url.OriginalString.ToLower.Contains("fasttest") = True Then myLangCookie.Secure = False
myLangCookie.Expires = Now.AddYears(50)
Response.Cookies.Add(myLangCookie)
End If
Dim myLang As String = myLangCookie.Values("language")
Thread.CurrentThread.CurrentUICulture = New Globalization.CultureInfo(myLang)
Thread.CurrentThread.CurrentCulture = New Globalization.CultureInfo(myLang)
结束子
在web.config中:
<globalization enableClientBasedCulture="true" culture="auto" uiCulture="auto" requestEncoding="utf-8" responseEncoding="utf-8" />
我已将标记添加到原始帖子。 – Eric