我正在構建一個多語言支持的網站。 爲此,我在母版頁上有一個鏈接按鈕。母版頁中的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