2014-05-22 109 views
0

我正在構建一個多語言支持的網站。 爲此,我在母版頁上有一個鏈接按鈕。母版頁中的ASP.NET語言設置

我已經創建了一個新的基類繼承自。 我已經在Global.asax文件中設置了CurrentUICulture和CurrentCulture。 我已經創建了母版的資源文件。 我已在webconfig文件中設置全球化行。 如同時設置的區域性和uiculture爲「自動」

我的母版頁被稱爲「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) 

結束子

在web.config中:

<globalization enableClientBasedCulture="true" culture="auto" uiCulture="auto" requestEncoding="utf-8" responseEncoding="utf-8" /> 
+0

我已將標記添加到原始帖子。 – Eric

回答

1

它確實爲我工作。讓我們來看看這裏的基礎知識:

  • 你的文件夾名爲App_LocalResources在你的web項目中嗎?
  • 這個文件夾,你應該有默認的資源文件中
  • (假設你的母版頁名爲MasterPage.Paster)應該有MasterPage.Master.resx(英語 - 默認)和MasterPage.Master.nl-Nl.resx
  • 這兩個文件都應該在屬性中標記爲「嵌入式資源」
+0

*是 *我將其重命名爲文化名稱。可能不應該那樣做,所以我產生了一個新的。 *他們是。 – Eric

+0

是的,就是這樣。我不應該重命名masterpage默認資源文件。生成一個新的,解決了這個問題。非常感謝,Ondrej! – Eric