我正在构建一个支持多种语言的网站。 为此,我的母版页上有一个链接按钮。
我创建了一个新的基类来继承。 我在Global.asax文件中设置了CurrentUICulture和CurrentCulture。 我已经创建了母版页的资源文件。 我在webconfig文件中设置了全球化线。 文化和养殖都设置为" auto"
我的主页名为" 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)
End Sub
web.config中的:
<globalization enableClientBasedCulture="true" culture="auto" uiCulture="auto" requestEncoding="utf-8" responseEncoding="utf-8" />
答案 0 :(得分:1)
它对我有用。让我们在这里查看基础知识: