내가 슈퍼 기본 뭔가가 ...하지만 리소스 파일을 사용하여 현지화을하려고 나는 단순히 MSDN 예제의 코드 숨김에서 here:ASP.Net 현지화 InitializeCulture 컨트롤 항상 null
을 발견 사용하고해야 내 페이지 내 마크 업에서
Protected Overrides Sub InitializeCulture()
If Request.Form("listLanguages") IsNot Nothing Then
Dim selectedLanguage As String = _
Request.Form("listLanguages")
UICulture = Request.Form("listLanguages")
Culture = Request.Form("listLanguages")
Thread.CurrentThread.CurrentCulture = _
CultureInfo.CreateSpecificCulture(selectedLanguage)
Thread.CurrentThread.CurrentUICulture = New _
CultureInfo(selectedLanguage)
End If
MyBase.InitializeCulture()
End Sub
:
<form id="form1" runat="server" defaultbutton="btnStart" autocomplete="off" >
<asp:Label ID="lblLanguageChoice" AssociatedcontrolID="listLanguages" runat="server" Text="Language Options"></asp:Label>
<asp:ListBox ID="listLanguages" runat="server">
<asp:ListItem Value="en" Selected="True" Text="English"></asp:ListItem>
<asp:ListItem Value="es" Text="Español"></asp:ListItem>
</asp:ListBox>
<asp:Button ID="btnChangeLanguage" runat="server"
Text="Change Language" />
.......
하지만, 목록 상자 (언어를 선택한 후 버튼을 타격) 코드를 단계별로 때 이 이벤트가 발생하는 페이지 사이클의 초기 단계에서 어떤 의미가 있는지는 "아무 것도 없음"입니다.
이 루틴을 통해 내 언어 선택을 어떻게 알 수 있습니까? 버튼 클릭시 세션 변수에 선택한 내용을 채우려고했지만 "클릭 뒤"입니다. (한 번 클릭하면 언어 선택 사항을 저장하지만 기본 언어로 유지됩니다. 두 번 클릭하면 선택한 언어로 전환됩니다.) 버튼 클릭 순간에 새로 고침을하는 솔루션이 필요하며 사용자가이를 클릭하지 않아도됩니다 두번.
편집 : 이유를 찾았습니다. 이제 해결 방법을 찾아야합니다. 그것은 미친 ASP 명명 규칙입니다. 내 목록 상자의 이름이 "listLanguages"가 아닙니다. "ctl00 $ MainContent $ listLanguages"라는 이름이 붙여졌습니다. ClientIDMode static은 ID가 변경되지만 이름은 변경하지 않기 때문에 해결되지 않습니다. 완전히 해결되면 게시 할 것입니다.
EDIT2 : 여기 있습니다. 그것은 약간 hackish이고이 페이지에 많은 매개 변수가 없기 때문에 단지 작동합니다. 누구든지 좀 더 세련된 솔루션을 알고 있다면 정말 고맙겠습니다.
Dim request As HttpRequest = Me.Request
Dim params As NameValueCollection = request.Form
For Each par As String In params.AllKeys
If par.Contains("listLanguages") Then
Dim selectedLanguage As String = request(par)
UICulture = request(par)
Culture = request(par)
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(selectedLanguage)
Thread.CurrentThread.CurrentUICulture = New CultureInfo(selectedLanguage)
End If
Next
MyBase.InitializeCulture()
. 하지만 그것은 javascript에 의존합니다. 즉, 사이트를 사용하는 누군가가 javascript를 사용할 수 있어야합니다. 여전히 잘 작동 할 것 같습니다. 고맙습니다! – user158017
저는 실제로 사용하지 않았습니다. 나는 자바 스크립트에 의존하지 않기 때문에 여전히 내 솔루션을 사용하고 있습니다. 그래서 나는 대답으로 확인하지 않았다. 하지만 담당자에게 그걸 확인해 줄 게. – user158017