by WebInfinity
16. giugno 2011 10:06
Spesso abbiamo l'esigenza di creare siti web multilingua e in questo caso asp.net ci viene incontro con le risorse globali e locali. Detto questo per avere un sito con la possibilità di scelta lingua il passo è breve.
Di norma io non utilizzo la funzione di culture settata in auto nel web.config, il motivo è che spesso i motori di ricerca potrebbero indicizzare solo il sito in inglese soprattutto se il dominio non è .com in quanto google fa una scelta per il linguaggio legata al dominio, tipo .it sarà per google in italiano.
A questo punto la scelta più corretta a mio avviso e introdurre nel global.asax un controllo che faccia un check su di un particolare cookie così da avere la lingua settata correttamente su richiesta del visitatore.
Il codice da mettere nel global.asax è:
Protected Sub Application_BeginRequest(ByVal sender As Object, ByVal e As EventArgs)
Dim cookie As HttpCookie = Request.Cookies("CultureInfo")
If cookie IsNot Nothing AndAlso cookie.Value IsNot Nothing Then
Thread.CurrentThread.CurrentUICulture = New CultureInfo(cookie.Value)
Thread.CurrentThread.CurrentCulture = New CultureInfo(cookie.Value)
Else
Thread.CurrentThread.CurrentUICulture = New CultureInfo("it-IT")
Thread.CurrentThread.CurrentCulture = New CultureInfo("it-IT")
End If
End Sub
Fatto questo andremo ad impostare sul controllo che vogliamo il codice per impostare il cookie in questo modo:
Dim cookie As New HttpCookie("CultureInfo")
cookie.Value = "en-US"
Response.Cookies.Add(cookie)
Thread.CurrentThread.CurrentCulture = New CultureInfo("en-US")
Thread.CurrentThread.CurrentUICulture = New CultureInfo("en-US")
Server.Transfer(Request.Path)
Ora il nostro sito web è pronto per il multilanguage.