Switching culture(localization) with a single linkbutton

My issue is a client wants the switch of the culture to happen with a single link or linkbutton. It currently runs just fine and dandy with a dropdownlist. My issue I seem to be having is that I need a post back that reinilalizes the command arguement and text in the link button back to English even if I change the culture.
godirectAsked:
Who is Participating?
 
ororioleConnect With a Mentor Commented:
I think the problem is you have an error in your linkbutton markup:
<asp:LinkButton ID="LangDDL" OnClick="RequestLanguageChange_Click" Text="Español" CssClass="langMenu" CommandArgument="en-MX" runat="server"></asp:LinkButton>
 
en-MX makes no sense so the else path is taken: culture IS set to esMX but the button remains "espanol". Change the markup to:
 
<asp:LinkButton ID="LangDDL" OnClick="RequestLanguageChange_Click" Text="Español" CssClass="langMenu" CommandArgument="es-MX" runat="server"></asp:LinkButton>

Open in new window

0
 
godirectAuthor Commented:
Code attached of the basics.
<asp:LinkButton ID="LangDDL" OnClick="RequestLanguageChange_Click" Text="Español" CssClass="langMenu" CommandArgument="en-MX" runat="server"></asp:LinkButton>
 
Default.aspx.vb:
Protected Sub RequestLanguageChange_Click(ByVal sender As Object, ByVal e As System.EventArgs)
        If LangDDL.CommandArgument = "es-MX" Then
            SetCulture("es-MX", "es-MX")
            LangDDL.CommandArgument = "en-US"
            LangDDL.Text = "English"
        Else
            SetCulture("en-US", "en-US")
            LangDDL.CommandArgument = "es-MX"
            LangDDL.Text = "Espa&#241;ol"
        End If
    End Sub
 
BaseClass:
Protected Overrides Sub InitializeCulture()
        If Session("MyUICulture") IsNot Nothing AndAlso Session("MyCulture") IsNot Nothing Then
 
            Thread.CurrentThread.CurrentUICulture = DirectCast(Session("MyUICulture"), CultureInfo) 'New CultureInfo(Session("MyCulture"))
            Thread.CurrentThread.CurrentCulture = DirectCast(Session("MyCulture"), CultureInfo) 'CultureInfo.CreateSpecificCulture(Session("MyCulture"))
 
        End If
 
        MyBase.InitializeCulture()
    End Sub
 
 Public Sub SetCulture(ByVal name As String, ByVal locale As String)
 
        Thread.CurrentThread.CurrentUICulture = New CultureInfo(name)
        Thread.CurrentThread.CurrentCulture = New CultureInfo(locale)
        '///<remarks>
        '///Saving the current thread's culture set by the User in the Session
        '///so that it can be used across the pages in the current application.
        '///</remarks>
        Session("MyUICulture") = Thread.CurrentThread.CurrentUICulture
        Session("MyCulture") = Thread.CurrentThread.CurrentCulture
 
    End Sub

Open in new window

0
 
ororioleCommented:
I dont understand the problem. Weren't you doing a postback with the dropdownlist as well? Were you doing async postbacks?
0
 
godirectAuthor Commented:
Yes I was doing a post back from a dropdownlist and it worked fine, but when I switched to a linkbutton I had to do a response.redirect to a refresh to get the new culture to take affect. When this in turn refreshed the link button to say Spanish again when the text on the page is turned to spanish.  I need to be able to change the page and swap back and forth between "English" and "Spanish" in the text of the link button.
0
 
ororioleCommented:
Just to be clear, so everything is working ok EXCEPT the text on the linkbutton?

I will try this and get back to you.
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.