Fortunately, ASP.NET provides a method in the Page class to override: InitializeCulture(). This method executes very early in the page lifecycle (much before any control is generated), and here we can set the UICulture and Culture of the current thread.
Since this method is in the Page class and I do not want to repeat the same code for each web page, I created a BasePage class, and all the aspx pages in my application derive from this BasePage class.
i used this code in my common class and it worked:
Protected Overrides Sub InitializeCulture()
Try
If (Not String.IsNullOrEmpty(Session("language"))) Then
Thread.CurrentThread.CurrentCulture = New CultureInfo(Session("language").ToString)
Thread.CurrentThread.CurrentUICulture = Thread.CurrentThread.CurrentCulture
Else
Thread.CurrentThread.CurrentUICulture = New CultureInfo("en-US")
Thread.CurrentThread.CurrentCulture = New CultureInfo("en-US")
End If
Catch ex As Exception
End Try
MyBase.InitializeCulture()
End Sub
also want to Thank Sandeep for valuable advice