2014-05-22 3 views
0

여러 언어 지원 웹 사이트를 구축 중입니다. 이 경우 마스터 페이지에 링크 버튼이 있습니다.마스터 페이지의 ASP.NET 언어 설정

상속받을 새 기본 클래스를 만들었습니다. CurrentUICulture 및 CurrentCulture를 Global.asax 파일에 설정했습니다. masterpage의 리소스 파일을 만들었습니다. webconfig 파일에 전역 화 행을 설정했습니다. masterpage.master.en-gb.resxmasterpage.master.nl-nl.resx : 설정 한 모두 문화와 uiculture은 "자동"

내 마스터 페이지 내가이 개 리소스 파일이 "masterpage.master" 이라고합니다. (또한 en-GB 및 nl-NL로 시도했습니다.)

처음에는 영어로 마스터 페이지를 만들었습니다. 쿠키를 사용하여 선택한 언어를 저장합니다. 기본적으로 쿠키는 "en-GB"로 설정되지만 테스트를 위해 "nl-NL"로 설정됩니다.

쿠키가 만들어지고 테스트를 통해 문화가 nl-NL으로 설정되는 것을 보았습니다.

아직 .... 링크 버튼 텍스트가 변경되지 않습니다. nl-NL 텍스트가 아닌 en-GB 텍스트를 보여줍니다.

내가 무엇을 놓쳤는가? 웹 사이트에서 올바른 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에서 : Web.config의에서

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) 

최종 하위

:

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

원래 게시물에 마크 업을 추가했습니다. – Eric

답변

1

그것은 않습니다 나를 위해 일해. 기본 사항 확인 :

  • 웹 프로젝트에 App_LocalResources라는 폴더가 있습니까?
  • 이 폴더에는 masterPage.Master.resx (영어 - 기본값) 및 MasterPage.Master.nl-Nl.resx가 있어야합니다. 기본 리소스 파일이 있어야합니다 (마스터 페이지의 이름이 MasterPage.Paster 인 경우)
  • 두 파일 모두 속성의 "포함 된 자원"으로 표시되어야합니다.
+0

* 예 * 문화권 이름으로 이름을 변경했습니다. 아마도 그렇게해서는 안된다. 그래서 나는 새로운 것을 만들었다. * 있습니다. – Eric

+0

예, 그게 전부입니다. masterpage 기본 리소스 파일의 이름을 변경하면 안됩니다. 새로운 것을 생성하여 문제를 해결했습니다. 큰 감사, Ondrej !!! – Eric