母版页中的ASP.NET语言设置

时间:2014-05-22 13:15:05

标签: asp.net master-pages cultureinfo

我正在构建一个支持多种语言的网站。 为此,我的母版页上有一个链接按钮。

我创建了一个新的基类来继承。 我在Global.asax文件中设置了CurrentUICulture和CurrentCulture。 我已经创建了母版页的资源文件。 我在webconfig文件中设置了全球化线。 文化和养殖都设置为" auto"

我的主页名为" masterpage.master" 我有两个资源文件:masterpage.master.en-gb.resxmasterpage.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"  />

1 个答案:

答案 0 :(得分:1)

它对我有用。让我们在这里查看基础知识:

  • 您的网络项目中是否有名为App_LocalResources的文件夹?
  • 在这个文件夹中你应该有默认资源文件(假设你的主页名为MasterPage.Paster)应该有MasterPage.Master.resx(英文 - 默认)和MasterPage.Master.nl-Nl.resx
  • 这两个文件都应在属性
  • 中标记为“嵌入资源”