Looking at the DNN code is always a good idea since it does the same you need. In this case this is the code we use in the language selector to change the current language:
Private Sub selectCulture_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles selectCulture.SelectedIndexChanged
' Store selected language in cookie
Localization.SetLanguage(selectCulture.SelectedItem.Value)
'Redirect to same page to update all controls for newly selected culture
Response.Redirect(Request.RawUrl, True)
End Sub
Notice that you have to reload the page (redirect) in order for the language to take effect. Hope this helps.